首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“模式中的错误:x >= y”在用保护方程定义函数时?

为什么“模式中的错误:x >= y”在用保护方程定义函数时?
EN

Stack Overflow用户
提问于 2019-07-27 22:44:01
回答 1查看 174关注 0票数 0

我试着用保护方程来定义函数。为什么它在GHCi中不起作用?谢谢。

代码语言:javascript
复制
Prelude> :{
Prelude| maxThree :: Integer -> Integer -> Integer -> Integer
Prelude| maxThree x y z
Prelude| x >= y && x >= z = x
Prelude| y >= z = y
Prelude| otherwise = z
Prelude| :}

<interactive>:77:1: error: Parse error in pattern: x >= y
EN

回答 1

Stack Overflow用户

发布于 2019-07-27 22:54:39

你的语法错了。不要为提示符已经包含|这一事实所迷惑!您所写的内容如下:

代码语言:javascript
复制
maxThree :: Integer -> Integer -> Integer -> Integer
maxThree x y z
x >= y && x >= z = x
y >= z = y
otherwise = z

如您所见,这显然是错误的。警卫总是从垂直条形|开始,但是你忽略了它。我假设您对Prelude|提示符已经包含了|这一事实感到困惑;这是GHCi UI的一部分,而不是被认为是您输入的代码的一部分。如果您想在GHCi中键入一个保护程序,请这样做:

代码语言:javascript
复制
Prelude> :{
Prelude| maxThree :: Integer -> Integer -> Integer -> Integer
Prelude| maxThree x y z
Prelude|   | x >= y && x >= z = x
Prelude|   | y >= z = y
Prelude|   | otherwise = z
Prelude| :}

请注意,我是如何将代码输入到GHCi 中的--与将其键入文件的完全相同,包括需要相对于定义的开头缩进守卫这一事实。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57236600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档