2017-08-16 27 views
3

您可以在.ghci文件中定義多行函數嗎?在.ghci文件中定義多行函數

我已經試過

what :: Show a => a -> a 
what = Db.traceShowId 

但這並沒有工作。有沒有辦法做到這一點?

+6

爲什麼不只是把它寫在一個單獨的名爲.hs文件並有你的.ghci加載? – Cubic

+0

你也可以使用大括號和分號來編寫haskell,以使它適合oneliner:'what :: Show a => a - > a; what = Db.traceShowId'。你可以做case語句:'case x of {1 - >「one」; 2 - >「兩」; _ - >「我不知道」}',實例定義'instance Num a => Num(X a){(+)=> liftA2(+); (*)= liftA2(*); { - ... - }}'和其他任何構造。 – rampion

+0

@Cubic工作很好,我創建了一個'.ghci.hs'文件,並用':load〜/ .ghci.hs'將它加載到'.ghci'中。 –

回答

3

.ghci文件不適用於此類定義。

不過,如果你真的一定要,你可以使用

:{ 
line1 
line2 
... 
:} 

否則,你可以嘗試把整個定義一行

line1 ; line2 ; ... 
+0

值得注意的是,一個多行語句可以包含多個定義(比如'newtype Unit = Unit()'或者單個表達式(比如'1 + 2')。 – rampion

+0

這對我不起作用 – hgiesel

+0

@hgiesel Ah ,有趣的,我認爲它的工作,試試我在我的編輯中添加的替代方案 – chi