Chcę mieć mapę (party, Customobj) jako atrybut / argument w moim szablonie umowy. Chcę też określić listę kluczy jako obserwatorów w szablonie kontraktowym. Jak mogę to osiągnąć?

Dzięki.

0
Anurag 29 październik 2020, 13:05

1 odpowiedź

Najlepsza odpowiedź

observer Akceptuje arbitralne wyrażenia z argumentami szablonów w zakresie. Możesz więc napisać wyrażenie, które wyodrębnia klucze z mapy. Aby to zrobić, najpierw przekonwertować na listę pary (key, value), a następnie użyj map fst, aby wyrzucić wartości. Oto pełny przykład:

module Main where

import DA.Next.Map (Map)
import qualified DA.Next.Map as Map

data CustomObj = CustomObj
  deriving (Eq, Show)

template T
  with
    sig : Party
    m : Map Party CustomObj
  where
    signatory sig
    observer map fst (Map.toList m)
2
cocreature 29 październik 2020, 10:25