有没有办法使用Djinn在Emacs中自动生成Haskell代码?

问题描述:

标题几乎说明了一切。我在寻找这样的事情:有没有办法使用Djinn在Emacs中自动生成Haskell代码?

f :: Int -> Bool -> Int 
f = _body 

巨灵可以使用定理证明被证明的类型是居住了这样的功能生成代码。

我想知道,有没有一种现有的方法可以从Emacs中获取此功能?所以,而不是在我的代码中编写TemplateHaskell,我只是在我的代码上运行一个命令,它插入生成的代码?

我已经安装了ghc-mod,但我对它不是很熟悉。

+0

我不确定答案是什么,但我觉得这样会有相当有限的效用。事实上,你给出的代码是Djinn可能不太有用的一个很好的例子(这里有一个*巨大数量的居民)。对于一个64位'Int'的大小,我相信它会有'( (2^64)^ 2)^(2^64)'居民如果我做了我的数学权利)。它主要对多态类型有用,但它不支持类型类,我认为它不会在一段时间内更新。 – 2015-02-07 20:11:17

+0

是的,我给出的例子并不意味着实用,更多的是一个句法范例。 – jmite 2015-02-07 20:16:03

报价塞拉斯emacs guide的相关部分:

这是很好的,但在某些情况下,GHC-MOD能为你做更多:它 可以写你的整个表情!它通过利用Djinn的 的力量来实现。例如,让我们回去maybeMap的定义后 分裂:

maybeMap没有F = _maybeMap_body

maybeMap(只是X)F = _maybeMap_body

如果按抄送钙在每个孔,会显示 代码的几个选项,包括第一个 案例中的Nothing,以及第二个案例中的Nothing和Just x。您只需要 从列表中选择您想要包含的代码,并且将自动完成 。请注意,当需要使用涉及currying和 tupling的表达式时,此功能变得非常方便,因为它会为您获取正确类型的 表达式。

所以,是的,使用Djinn你可以在某些情况下编写整个表达式。我没有亲自使用过它们,但Emacs似乎有可能。