The goal is to guess a function from prelude, from its obfuscated type. Each type element (constraints, type variables, types) is initially replaced with the 🤷 emoji. You can reveal them by selecting a function name in the input. All the type elements that are in common with the mystery signature are revealed.
Once the type is fully revealed, the function name is revealed by new guesses following the same mechanism: chars occurring in both the guess name and the answer name are revealed.
The signatures are almost taken verbatim from ghci
, with the following differences:
- Brackets (
[]
) are replaced withList
; - Tuples (
(,)
and(,,)
) are replaced withTuple
andTuple3
; - The unit type (
()
) are replaced withUnit
; - Typeclasses method have their typeclass in a separated constraint group.
For instance,
traverse
hasTraversable t => Applicative f => (a -> f b) -> t a -> f (t b)
instead of(Traversable t, Applicative f) => …
Each character in the function name is replaced with a ❓ emoji.