繁体   English   中英

haskell中的函数单独声明

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM