初学者Haskell在这里学习。我已经解决了Project Euler Problem 1,3或5的倍数之和小于1000,但我正在寻找一个“更像英语的”功能表示。
我创建了一个名为multiples
的函数multiples::(Integral a) => a -> [a]
multiples a = map (*a) [1..]
我很满意,但我希望我能说
multiples of::(Integral a) => a -> [a]
multiples of a = map (*a) [1..]
阅读更像英语,但我在输入'of'
时得到一个解析错误我希望我的功能声明能够读取:
sum of multiples of::(Type)=>Type->Type
有什么希望吗?
答案 0 :(得分:9)
这有点傻,但你可以定义“单词”,并忽略你的“英语”函数中的参数:
by = ()
multiply a _ b = a*b
multiply 10 by 12
--120
但是在您的示例中,您运气不佳,因为of
是一个关键字(在case of
中使用)。
顺便说一下,这是另一种定义倍数的方法:
multiples_of = scanl1 (+) . repeat
take 10 $ multiples_of 12
--[12,24,36,48,60,72,84,96,108,120]