Well, in Haskell, the types of signatures and values are in different namespaces, so something specific in one does not run the risk of colliding with something else. In Idris, types and values occupy the same namespace, so you do not see, for example. data Foo = Foo, as in Haskell, but data Foo = MkFoo- the type is called Foo, and the constructor is called MkFoo, because there is already a value (type Foo) associated with the name Foo, for example data Pair = MkPair http://docs.idris-lang.org/en/latest/tutorial/typesfuns.html #tuples
Therefore, perhaps in the best way, he did not try to use the arrow used to construct the type of functions, with the arrow used for lambda - these are completely different things. You can combine them, for example. the (Int -> Int) (\x => x).
source
share