Tutorial completo em Tutorial Marlowe 3.0 (Parte 8) â Educação Cardano
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.