2015-02-07 61 views
4

標題幾乎說明了一切。我在尋找這樣的事情:有沒有辦法使用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

回答

2

報價塞拉斯emacs guide的相關部分:

這是很好的,但在某些情況下,GHC-MOD能爲你做更多:它 可以寫你的整個表情!它通過利用Djinn的 的力量來實現。例如,讓我們回去maybeMap的定義後 分裂:

maybeMap沒有F = _maybeMap_body

maybeMap(只是X)F = _maybeMap_body

如果按抄送鈣在每個孔,會顯示 代碼的幾個選項,包括第一個 案例中的Nothing,以及第二個案例中的Nothing和Just x。您只需要 從列表中選擇您想要包含的代碼,並且將自動完成 。請注意,當需要使用涉及currying和 tupling的表達式時,此功能變得非常方便,因爲它會爲您獲取正確類型的 表達式。

所以,是的,使用Djinn你可以在某些情況下編寫整個表達式。我沒有親自使用過它們,但Emacs似乎有可能。

相關問題