小编Can*_*Can的帖子

sml理解函数组合

我试图理解两者之间的区别;

val my_fun = length o List.filter (fn (item) => item = #"a") o String.explode 
Run Code Online (Sandbox Code Playgroud)

这个可以被调用(my_fun“name”将返回 1)并且工作正常。我试图理解为什么以下不起作用

length o (List.filter (fn (item) => item = #"a" ) (String.explode "name"))
Run Code Online (Sandbox Code Playgroud)

sml中函数组合的定义

f o g = f(g(x))
Run Code Online (Sandbox Code Playgroud)

在第二种形式中我们所做的是(我认为)

length ([#"a"]) 
Run Code Online (Sandbox Code Playgroud)

ml sml

4
推荐指数
1
解决办法
2811
查看次数

带字符串的模式 x:xs

我在 Haskell 世界中很新。我正在阅读在线http://learnyouahaskell.com,但我无法理解有关模式匹配部分的一个小细节。我已经写了那些函数

myFunc' (firstLetter:_) = firstLetter -- returns firstLetter of given string
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做

myFunc' (firstLetter:_) = "Hello" ++firstLetter
Run Code Online (Sandbox Code Playgroud)

调用此函数时出现以下错误

Couldn't match type ‘Char’ with ‘[Char]’
      Expected type: [[Char]]
        Actual type: [Char]
Run Code Online (Sandbox Code Playgroud)

但是如果我像这样修改函数

myFunc' (firstLetter:_) = "Hello" ++ [firstLetter]
Run Code Online (Sandbox Code Playgroud)

当我调用这个函数时效果很好。我想知道为什么在其他情况下我需要括号。什么实际上是firstLetter。

haskell pattern-matching

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

标签 统计

haskell ×1

ml ×1

pattern-matching ×1

sml ×1