我是PureScript的新手,现在正在读一本书“函数式编程变得更容易:一步一步的指南”,但当我读到关于元组的章节时,我意识到所有这些似乎都是胡说八道。
这是不起作用的代码。
splitPosAndNeg :: Array Int -> Tuple (Array Int) (Array Int)
let Tuple pos neg = splitPosAndNeg [1, -2, 3, -4, 5, -6, -7, 8]
let split = splitPosAndNeg [1, -2, 3, -4, 5, -6, -7, 8]
pos = fst split
neg = snd split有人能解释如何使用PureScript将正数和负数数组分割成两个正负数数组的一个元组吗?来自隔断的Data.Array会起作用吗?它是怎么用的?
@费奥多·索伊金,我已经试用了这本书的代码这里有分区函数。它还是不起作用。
发布于 2022-12-01 16:21:55
我没有这本书,所以很难说出脱节在哪里。
但是从您发布的片段来看,似乎作者只是断言该函数存在于作用域中,而没有给出它的实现,因为它对上下文并不重要。为了阐明该函数的作用,作者给出了它的类型签名。
splitPosAndNeg :: Array Int -> Tuple (Array Int) (Array Int)然后给出两个例子,说明如何使用这种函数的结果。第一个示例-通过模式匹配对元组构造函数:
let Tuple pos neg = splitPosAndNeg [1, -2, 3, -4, 5, -6, -7, 8]第二个例子--通过使用fst和snd函数分别获得元组的第一和第二元素:
let split = splitPosAndNeg [1, -2, 3, -4, 5, -6, -7, 8]
pos = fst split
neg = snd split(请注意,您可能在代码段中搞砸了缩进:pos和neg应该在split下对齐)
回应您的评论:
谢谢,但是代码仍然不起作用。请参考我的链接,在我的更新的帖子,我的问题以上。链接太长,无法粘贴到评论框中。
let绑定不能在顶层,它必须在函数体中。另外,您添加的函数实现类型错误。给,我帮你修好了。
发布于 2022-12-01 16:18:55
我刚刚从Data.Array模块中使用分区函数找到了问题的答案。
分区(_ > 0) 1,-2,3,-4,5,-6,-7,8
-{ no:-2,-4,-6,-7,是: 1,3,5,8 }
https://stackoverflow.com/questions/74644208
复制相似问题