对于Haskell所禁止的types,我有相当不错的直觉,就像“impandicative”一样:也就是说,除了->以外,类似于构造函数的参数出现在一个函数中。 但是什么是困境? 什么使它重要? 它与“谓词”有什么关系?
Data.Void的absurd函数具有以下签名,其中Void是由该包导出的逻辑上无人居住的types: — | Since 'Void' values logically don't exist, this witnesses the logical — reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a 我知道有足够的逻辑来得到文档的注释,这个注释对应于作为types的命题对应的有效公式⊥ → a 。 我感到困惑和好奇的是:这个函数有什么实用的编程问题是有用的? 我认为在某些情况下,作为彻底处理“不可能发生”事件的types安全的方法,这可能是有用的,但是我不太了解Curry-Howard的实际用法,告诉我们这个想法是否在正确的轨道。 编辑:最好在Haskell的例子,但如果有人想使用依赖types的语言,我不会抱怨…
我开始深入依赖types编程,并发现Agda和Idris语言是最接近Haskell,所以我开始在那里。 我的问题是:他们之间的主要区别是什么? 这两种types的系统是否同样expression? 对收益进行全面的比较和讨论是非常好的。 我已经能够发现一些: Idris的Haskelltypes类,而Agda带有实例参数 伊德里斯包括一元和适用的符号 他们两个似乎都有某种可重新expression的语法,虽然不太确定它们是否相同。 编辑 :在这个问题的Reddit页面有更多的答案: http : //www.reddit.com/r/dependent_types/comments/q8n2q/agda_vs_idris/