我试图理解点运算符在这个Haskell代码中做了什么:
sumEuler = sum . (map euler) . mkList
Run Code Online (Sandbox Code Playgroud)
整个源代码如下.
点运算符将两个函数sum以及结果map euler和结果mkList作为输入.
但是,sum它不是函数,它是函数的参数,对吧?那么这里发生了什么?
还有,(map euler)做什么?
mkList :: Int -> [Int]
mkList n = [1..n-1]
euler :: Int -> Int
euler n = length (filter (relprime n) (mkList n))
sumEuler :: Int -> Int
sumEuler = sum . (map euler) . mkList
Run Code Online (Sandbox Code Playgroud) 这是我在ghci中尝试做的事情:
import Data.Text
strip " abc "
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
<interactive>:1:6:
Couldn't match expected type `Text' against inferred type `[Char]'
In the first argument of `strip', namely `" abc "'
In the expression: strip " abc "
In the definition of `it': it = strip " abc "
Run Code Online (Sandbox Code Playgroud)
我期待这个工作,因为它是在许多网页上给出的,包括这个答案:在Haskell中,你如何从字符串的开头和结尾修剪空格?
我究竟做错了什么?
我有一个字符串列表:
[" ix = index"," ctr = counter"," tbl = table"]
Run Code Online (Sandbox Code Playgroud)
我想从它创建一个元组,如:
[("ix","index"),("ctr","counter"),("tbl","table")]
Run Code Online (Sandbox Code Playgroud)
我甚至尝试过:
genTuple [] = []
genTuples (a:as)= do
i<-splitOn '=' a
genTuples as
return i
Run Code Online (Sandbox Code Playgroud)
任何帮助都会受到赞赏谢谢.