【发布时间】: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))]
但我遇到了同样的错误。那么一般来说,涉及对的排版功能是如何工作的呢?
【问题讨论】:
-
哪两个素数加起来等于 1?
-
@chepner 3 和 -2,自然而然。