gpt4 book ai didi

haskell - Haskell类型错误编译

转载 作者:行者123 更新时间:2023-12-02 10:51:18 25 4
gpt4 key购买 nike

我不确定为什么以下代码会导致以下错误。

代码:

type Symbol = Char

symbols :: [Symbol]
symbols = ['a'..'f']

type Code = [Symbol]

members :: Code -> Bool
members xs = and [ b | x <- xs, b <- map (elem x) symbols ]

编译错误:
Couldn't match type ‘Char’ with ‘t0 Symbol’
Expected type: [t0 Symbol]
Actual type: [Symbol]
• In the second argument of ‘map’, namely ‘symbols’
In the expression: map (elem x) symbols
In a stmt of a list comprehension: b <- map (elem x) symbols

最佳答案

您提供的代码有一些错误。

  • 如@FramkSchmitt所述,缺少xs参数。
  • 您尝试将elem x映射到列表上-这将需要一个列表列表才能正确。

  • 这就是我想你想要的。
    members :: Code -> Bool
    members xs = and [ x `elem` symbols | x <- xs ]

    可以写得更简洁一些(我相信像hlint这样的工具甚至可以建议简化)。
    members' :: Code -> Bool
    members' = all (`elem` symbols)

    关于haskell - Haskell类型错误编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46886961/

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