[英]Separate declaration of functions in haskell
有沒有一種方法(也許有些編譯指示或擴展名(我正在使用GHC ))允許分別聲明不同的功能模式?
例如,我可以這樣做:
fun1 1 = "1"
fun1 2 = "a"
fun1 3 = "4"
fun1 4 = "3"
但是我不能這樣做:
fun1 1 = "1"
fun1 2 = "a"
fun1 3 = "4"
a = 3 -- Just some code here.
fun1 4 = "3"
即我需要一些東西來消除這種限制。
我需要某種“游戲”來使用它,在此之前的代碼無法編輯。
先感謝您!
據我所知,這是不可能的。 像這樣的多個定義僅是語法case
,因此不是語法上魯棒的語法抽象。 只是通常沒有必要。
使用haskell-src
包來解析Haskell代碼並為您的游戲構建增量界面可能會很幸運。
我不禁感到,如果允許的話,人們會編寫相當混亂的代碼。
除非有重要的結構原因,否則最好堅持使用通常有效的語法-如果定義全部放在一個地方,則更容易理解。
但是,也許最好以不同的方式構造它以實現所需的功能:
您可以使用Data.Map在代碼的不同部分構建幾個子圖,然后在某個適當的階段將它們粘合在一起。
您可以將這些定義保存在一個或多個配置文件中,並在游戲初始化時讀取它們。 您的用戶可能喜歡以這種方式輕松編輯游戲。
您可以以更方便Haskell的方式存儲數據
您可以使用快速的二進制包對其進行序列化,然后在運行時讀取它。
您可以使用Yesod的與后端無關的Persistent
這里有太多其他選擇
您可以對fun1
的輸入使用聯合類型(例如Either
),然后分發有關代碼的定義,但是編寫一個統一的功能來檢查輸入並根據類別對其進行標記。
在不了解您要做什么的情況下很難知道什么是最好的,但是放松sytnax規則並不意味着前進了一步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.