Haskell代码
Haskell代码说明
- list(列表)为 Haskell的内置集合类型,其成员类型种类不受限制,但所有成员的类型必须一致。
列表语法:[a1, a2, ..., an] - 字符串在Haskell中被实现为成员类型为字符的list。
如字符串"Hello World" 其实就是列表['H','e','l','l','o',' ','W','o','r','l','d'] - 预定义函数map(映射)
参数:算法函数f(单参数),列表[a1, a2, ..., an]
功能:返回新列表[b1, b2, ..., bn],其中bk = f(ak)
第1行代码含义为:将字符串"Hello World"中的所有字符改为大写,返回所生成的新字符串。 - 预定义函数filter(过滤)
参数:谓词函数p(单参数),列表[a1, a2, ..., an]
功能:返回新列表[b1, b2, ..., bn2],其中bk = {am| p(am)=true}
第4行代码含义为:过滤掉字符串"Hello World"中所有非小写字符,返回所生成的新字符串。 - 预定义函数foldl(左卷起)
参数:算法函数f(双参数),初始状态值v,列表[a1, a2, ..., an]
功能:返回 f( ... f(f(v, a1), a2), ..., an)
第7行代码含义为:求 (((1-4)-8)-5) 的值。 - 预定义函数foldr(右卷起)
参数:算法函数f(双参数),初始状态值v,列表[a1, a2, ..., an]
功能:返回 f(a1, f(a2, ... f(an, v) ... ))
第10行代码含义为:求 (4-(8-(5-1))) 的值。
F#代码
F#代码说明
- list(列表)为 F#的内置集合类型,其成员类型种类不受限制,但所有成员的类型必须一致。
列表语法:[a1; a2; ...; an] - Haskell的 map 函数相当于F#的 List.map 函数。
- Haskell的 filter 函数相当于F#的 List.filter 函数。
- Haskell的 foldl 函数相当于F#的 List.fold 函数。
- Haskell的 foldr 函数相当于F#的 List.foldBack 函数。
C++代码
C++代码说明
- Haskell的列表(list)用tr1库的array组件来模拟。
- Haskell的 map 函数用标准库的transform算法来模拟。
- Haskell的 filter 函数用标准库的remove_if算法来模拟。
- Haskell的 foldl 函数和 foldr 函数用标准库的accumulate算法来模拟。