函数声明Haskell中模式匹配中的括号

 CCTV知府影 发布于 2023-02-13 16:06

我们是否必须在函数声明中使用模式匹配中的括号?

在下面的示例中,我有一个模式x:xs,其中x从列表中获取第一个元素并xs包含其余元素.

我想问一下括号是否是这种模式匹配的必要部分.

head' :: [a] -> a  
head' [] = error "Can't call head on an empty list!"  
head' (x:_) = x  

我尝试使用它没有大括号,但它在加载到ghci期间导致错误.

1 个回答
  • 括号不是模式匹配的一部分,同样意义上它们不是表达式评估的一部分.话虽这么说,括号肯定是模式和表达式语法的一部分.

    看,如果你写

    h x:xs
    

    这看起来像

    (h x) : xs
    

    到解析器.因此我们写

    h (x:xs)
    

    在等号的左手侧和右手侧.作为表达式,它表示"函数h应用于由x和xs构成的列表",并且在左侧它定义了该应用程序的等式.

    2023-02-13 16:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有