好吧,在Haskell中,类型签名和值在不同的命名空间中,因此在一个中定义的东西不会与另一个中的某些东西发生冲突.在Idris中,类型和值占用相同的命名空间,这就是为什么你没有data Foo = Foo像在Haskell中看到的那样,而是,data Foo = MkFoo- 调用类型Foo,并调用构造函数MkFoo,因为已经存在一个值(类型)Foo),绑定到名称Foo,例如data Pair = MkPair http://docs.idris-lang.org/en/latest/tutorial/typesfuns.html#tuples
所以它可能是最好的,它没有尝试使用用于构建函数的类型,用于lambda的箭头 - 这些是相当不同的东西.你可以将它们与例如the (Int -> Int) (\x => x).