Skip to content
Discussions/App Development/Why different templates can't have the same choice name?Forum ↗

Why different templates can't have the same choice name?

App Development4 posts184 views2 likesLast activity Apr 2022
CO
cohen.avrahamOP
Apr 2022

G-d willing

Hello,
I was wondering why Daml can’t handle same choice names for different templates?
It makes the naming convention of choices to be longer than normal.
Comparing it to OOP, different classes can have same method names…

Thanks,

CO
cocreature
Apr 2022

In general, different templates can have the same choice name. What is not possible is to have different templates with the same choice name within a single module.

The reason for that is that each choice generates a data type of the same name for the choice argument. Daml does not have scoping of data-types beyond the module level so it’s not possible to have two datatypes with the same name declared in the same module.

You could imagine various alternative module/scoping concepts that would allow for this but we inherited this from Haskell which has the same limitation so for now we’re stuck with this.

CO
cohen.avraham
Apr 2022

G-d willing

It could be fixed easily by generating a data type that is combined from the template name and the choice name together.
I understand the limitation, and have to live with this. However, I just wanted to know the reason for it.
So, Haskell is the one to blame on this one :grinning:
Thanks for your answer :+1:

CO
cocreature
Apr 2022

It could be fixed easily by generating a data type that is combined from the template name and the choice name together.

The problem with that is that the datatype is not just an internal implementation detail. It’s the thing you pass when you call exercise, e.g., exercise X (YourChoice with f = 23). If we generated a type with a different name, things would get pretty confusing since that’s also the type that you would have to use here.

← Back to Discussions