I have noticed the frequent appearance of two consecutive apostrophes in Haskell code.

Like this:

newtype Date = Date Integer
data EndDate = Fixed Integer | Never
unstableMakeIsData ''Date
unstableMakeIsData ''EndDate

What does '' mean in haskell?


The apostrophe(s) in Haskell (and thus Plutus) are part of the name; they do not hold any specific meaning.

Haskell as a functional programming language borrows from mathematical notation. An apostrophe on a variable name conveys that it is somewhat related to another variable (without or with more apostrophes).

Imagine a simple function that adds three values. You could write these several ways.

addThreeNumbers a b c = a + b + c
addThreeNumbers' a b c = b + c + a
addThreeNumbers'' a b c = b + a + c
addThreeNumbers''' a b c = c + a + b

and so on. The result will always be the same.

The apostrophes in your example are, however, not of the same type as the prefix data types. This is an indicator that template haskell is being used.

  • but in my case, unstableMakeIsData is a function name and ''Date is not defined before. The apostrophe(s) is a prefix not suffix, I think It might be different. – mackie Jun 8 at 3:13
  • I found your example in this commit: github.com/input-output-hk/plutus/commit/… -- take a look at the Instances.hs – Matthias Sieber Jun 8 at 5:28
  • I apologize for the confusion. The apostrophes in front of the type hint at template haskell – Matthias Sieber Jun 8 at 5:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.