小编erd*_*asa的帖子

将功能列表应用于输入列表的Haskell函数?

我需要一个Haskell函数,该函数需要一个函数列表和一个元素列表,并将这些函数应用于此类元素:第一个函数应用于第一个元素,第二个函数应用于第二个元素,依此类推。如果任何列表停止,我希望功能停止。我想出的定义是:

apply :: [(a -> b)] -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)

我希望它能像这样工作:

apply [(+1), (*3), (^2)] [1,2,3] == [2,6,9]
apply [even, odd] [1..] == [False, False]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试过的事情:

apply :: [(a -> b)] -> [a] -> [b]
apply [] _ = []
apply (f:fs) x = (f x) : (apply fs x)
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

6
推荐指数
1
解决办法
97
查看次数

试图通过Haskell查找GCD。我的代码中的错误在哪里?

作为练习,我尝试自己编写此代码,但是我被卡住了,不知道代码中的错误在哪里。

module Hf where

--sumSquaresTo :: Integer -> Integer
--sumSquaresTo x = sum [ n^2 | n <- [1..x] ]

divides a b = b `mod` a == 0

divisors a = [n | n <- [1..a], n `divides` a ]


lnko :: Integer -> Integer -> Integer
lnko a b = [n | n <- [1..max(a b)], (n `divides` a) && (n `divides` b) ]
Run Code Online (Sandbox Code Playgroud)

GHCI输出:

error:
    * Couldn't match expected type `Integer'
                  with actual type `[a0 -> a0]' …
Run Code Online (Sandbox Code Playgroud)

haskell greatest-common-divisor

4
推荐指数
2
解决办法
91
查看次数

如何仅从列表中获取唯一元素?

我有一个清单,比如说[1,2,3,4,3,2,4]。我想输出每个元素一次,例如[1,2,3,4]。我怎样才能在 Haskell 中做到这一点?

haskell functional-programming list unique

3
推荐指数
3
解决办法
1364
查看次数