[英]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.