🇧🇷 Tutorial Marlowe 8/14

Tutorial completo em https://educacaocardano.wordpress.com/2020/05/23/marlowe-8/

8. Marlowe Embarcado

Neste tutorial, voltamos ao exemplo do compromisso e mostramos como podemos usar a Marlowe embarcado em Haskell para criar descrições mais legíveis, modulares e reutilizáveis ​​dos contratos da Marlowe.

8.1 Um simples contrato de compromisso, revisitado

Lembre-se de que desenvolvemos este contrato da Marlowe em nosso tutorial anterior.

Enquanto o apresentamos como um contrato “monolótico”, podemos usar as definições de Haskell para torná-lo mais legível. Para começar, podemos separar o compromisso inicial da parte interna do contrato:

Muitos dos termos aqui são definidos em Haskell. Principalmente, temos os dois contratos que lidam com o que acontece quando há acordo entre Alice e Bob e, se não, como Carol deve arbitrar entre eles:

Dentro desses contratos, também usamos abreviações simples, como

que indica o preço do gato e, portanto, o valor do dinheiro sob custódia.

Também podemos descrever as escolhas feitas por Alice e Bob, observando que também é solicitado um valor padrão defValue, caso as escolhas não tenham sido feitas.

Ao descrever as opções, podemos atribuir nomes sensíveis aos valores numéricos:

e definir novas funções (ou “modelos”) para nós mesmos. Neste caso, definimos

como uma maneira de tornar a expressão das escolhas um pouco mais simples e mais legível:

Dadas todas essas definições, somos capazes de escrever o contrato no início desta seção, de maneira a tornar clara sua intenção. Escrevendo em Marlowe ‘puro’ ou expandindo essas definições, teríamos esse contrato:

“Exercícios: Que outras abreviações você poderia adicionar ao contrato na parte superior da página?

Você consegue identificar alguma função que possa definir para tornar o contrato mais curto ou mais modular?”

Este exemplo mostrou como a utilizar o Haskell de forma embarcada nos fornece uma linguagem mais expressiva, simplesmente reutilizando alguns dos recursos básicos do Haskell, a saber, definições de constantes e funções. No próximo tutorial, você aprenderá sobre como exercitar contratos Marlowe em ghci.

Nota

Este contrato está contido nos módulos EscrowSimpleV2.hs

A versão expandida vem do Marlowe Playground, que suporta a expansão de definições embarcadas no Marlowe puro.

1 Like

Muito bom! :clap:t4: :clap:t4: :clap:t4: