gpt4 book ai didi

Haskell 数据类型函数参数

转载 作者:行者123 更新时间:2023-12-04 22:21:47 25 4
gpt4 key购买 nike

就参数的数据类型而言,Haskell 中函数定义中的括号有何意义。

例如:

doStuff Name -> Age -> String
doStuff (NameConstr a) (AgeConstr b) = "Nom: " ++ a ++ ", age: " ++ b

事先在某处定义了以下内容:
data Name = NameConstr String
data Age = AgeConstr Integer

函数参数 a 和 b 是否可以以不需要括号的方式捕获?

仅供引用,我正在解决:
  • http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/#type-construction
  • http://learnyouahaskell.com/types-and-typeclasses ,

  • 而我似乎还无法掌握这个更精细的细节。

    最佳答案

    如果没有括号,函数将被视为具有四个参数。不过,我想不出省略括号会导致歧义的反例。

    如果需要,您可以按如下方式重新定义类型:

    data Name = NameConstr { getName :: String  }
    data Age = AgeConstr { getAge :: Integer }

    这样你的函数就可以变成:
    doStuff n a = "Nom: " ++ getName n ++ ", age: " ++ show (getAge a)

    (修复了最后一部分; a 是一个 Integer 并且不能连接到一个字符串)

    关于Haskell 数据类型函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996980/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com