繁体   English   中英

尝试运行时解析错误 haskell function?

[英]Parse error when trying to run haskell function?

我正在尝试编写一个使用折叠的 Haskell function 并将采用一个字符串并将其“单词值”作为一个 int 返回。 这是 function:

import Data.Char

wordValue :: String -> Int
wordValue (x:xs) = foldr (\(ord(toLower x) - (ord 'a') + 1)) 0 xs

基本上,我试图将每个字符转换为一个 int 值并使用“foldr”function 来累积该值。 但是,我收到以下错误,我不明白:

Parse error in pattern: ord (toLower x) - (ord 'a') + 1

foldr function 也有两个参数:列表的项目和尾部的foldr的结果。 因此,您应该将其实现为:

wordValue :: String -> Int
wordValue xs = foldr (\x ys -> ord (toLower x) - ord 'a' + ys + 1) 0 xs

其中x是列表的字符, ys是折叠列表的rest的结果(所以剩余元素的wordValue )。

但是在这里使用映射并总结它们更简单,所以:

wordValue :: String -> Int
wordValue = sum . map (\x -> ord (toLower x) - ord 'a' + 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM