评估Haskell数据类型中的未定义元素
|
如果我在未定义
a
,b
的情况下尝试> fst(a, b)
,则会收到b
未定义的错误。即使尝试snd(a, b)
,也是b
会首先导致错误。我有命令式编程的背景。我想知道这是否是我不理解的惰性。
没有找到相关结果
已邀请:
3 个回复
缔恃钨
这不是一个懒惰/急切的评估工作-当Hugs检查以确保
是有效的Haskell代码时,它会注意到未定义
和
。这两个字母在Haskell中没有特殊含义,它们像其他任何语言一样都是变量! 就像在Java中一样:
而且永远不要说ѭ1是什么!您可以改写类似以下内容的内容:
为了解决这个问题,您可以在let语句中定义
和
,例如:
要么
要么
或where语句
等等 或者,在一个名为“ everything”的文件中定义(例如,\“ TestTuple.hs \”)
在拥抱中,去:
尽管您注意到您正在使用拥抱,但仅供参考,您还可以在REPL中定义变量,如下所示:
浮凰量
如您所见,访问未定义的元素将得出一个未定义的值。 懒惰使我们避免评估整个结构,但是,
您的评论表明您可能已经忘记声明一些特定的变量
和
。
谷靛