Extracting list of parties from a list of custom objects

I have defined a custom object:

data CustomObj = CustomObj
    name : Party
    age : Int
    deriving(Eq, Show)

And my contract template is:

template MyContract
     owner : Party
     customObjList : [CustomObj]
     signatory owner
     observer //here I need a list of CustomObj.name

I want to extract the name field from each object of the customObjList. Make a list of these names and use it as the list of observers. How can I achieve that.

1 Like

try observer fmap (.name) customObjList

Here you can find more information: https://docs.daml.com/daml/stdlib/Prelude.html#function-ghc-base-fmap-41707


Just to elaborate a bit more, fmap is a function that takes two arguments. The second argument is your list; the first is a function to be applied to every element in that list. (.name) is short for \elem -> elem.name, where the backslash is notation for a function literal aka lambda function.

I suggest you have a peek at our documentation. There is even a new section on functional programming. We also have an online learning platform if that’s more your style.

And welcome to the community!

1 Like

That does the job. Thanks.

As a small side-note: When working with lists, it aids both readability and performance to use plain versions of functions and operators rather than the fancier ones form typeclasses. In this instance using map rather than fmap would make it more obvious that we are dealing with a list, for example.


Thanks @bernhard.