【问题标题】:Syntax for functions that take in or return functions in Haskell在 Haskell 中接收或返回函数的函数的语法
【发布时间】:2017-03-14 09:58:37
【问题描述】:

我正在通过 Learn You a Haskell 学习 Haskell,我很确定他在某个时候经历过这个问题,但我不知道在哪里。假设我想让一个函数返回一对、对列表或一般元组。这个的类型签名是怎么写的?例如,对于某些给定的偶数,我想返回加起来的唯一素数对的列表。我有一个函数isPrime 告诉Int 是否是素数。

pairs :: Int -> [(Int a, Int b)]
pairs n
  | n < 4 = []
  | odd n = []
  | otherwise = [(a, b) | a < b, isPrime a, isPrime b, a+b == 1]

当我尝试编译它时,我收到错误消息“Int has too little arguments”。所以我尝试了以下语法:

pairs :: Int -> [((Int a), (Int b))]

但我遇到了同样的错误。那么一般来说,涉及对的排版功能是如何工作的呢?

【问题讨论】:

标签: haskell types syntax


【解决方案1】:

您的问题不在于格式。 Int aInt b 不友善。 Int 不能应用,因为它不是(类型级)函数。你只想要Int -&gt; [(Int, Int)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2017-07-25
    • 2015-10-19
    相关资源
    最近更新 更多