【问题标题】:Taking list of tuples as parameters in Haskell将元组列表作为 Haskell 中的参数
【发布时间】:2016-01-14 17:02:36
【问题描述】:

我想知道如何将元组列表作为参数,或者是否有更简单的解决方案。

我是 Haskell 的新手(一周前才开始),我创建了这个函数来检查元组是否充当毕达哥拉斯三元组。

pyTheorem (a,b,c) = a ^ 2 + b ^ 2 == c ^ 2

let x = pyTheorem (3,4,5)  

那么我将如何定义一个函数,它需要一个元组列表并返回毕达哥拉斯三元组的元组?另外,如果有更好的方法,请详细说明。

我查找了一些类似的问题,但找不到适合此示例的内容。

旁注:我发现LYAH中的一些示例我似乎无法在在线终端中使用:https://ghc.io/

所以我改用http://www.tutorialspoint.com/compile_haskell_online.php。我应该注意哪些重大差异?

谢谢。

【问题讨论】:

    标签: list haskell tuples


    【解决方案1】:

    我想这就是你所需要的

    filterPy : [(Int,Int,Int)] -> [(Int,Int,Int)]
    filterPy ls = filter pyTheorem ls
    

    真正的狂热爱好者也会写它'point free'

    filterPy = filter pyTheorem
    

    【讨论】:

    • 谢谢!它有效,但它究竟是如何过滤的?由于它返回三元组,我假设它基于 pyTheorem 返回 true 进行过滤?
    • 我看到解释显示:filter p xs = [ x | x <- xs, p x] 但是从上面的代码如何翻译?
    • 这是另一种看待它的方式。过滤器遍历输入列表,运行 pyTheorem 并丢弃评估为 false 的每个元素
    • 那么我该如何用上面的语法来表达呢?
    猜你喜欢
    • 2015-01-05
    • 2011-07-04
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多