我使用的是Haskell堆栈。
module Len () where
my_nthele :: String -> Integer -> Char
my_nthele [] n = ''
my_nthele (x:xs) n | n == 0 = x
| otherwise = my_nthele xs (n-1)
Haskell解释器显示" src / Len.hs:5:1:错误: 解析错误(可能是错误的缩进或括号不匹配)"
我不知道出了什么问题。
答案 0 :(得分:2)
syntax for character literals dictates that you need something between the single quotes:
2.6字符和字符串文字
char → '(graphic|space|escape⟨\&⟩)' [remark: heavily simplified]
字符文字写在单引号之间,如'a'
因此,''
不是字符的有效语法。应该怎么样?没有任何角色可以开始。类型Char
不包含不是字符的概念,就像Int
不包含不存在的概念一样。
这正是Maybe
的用途:
my_nthele :: String -> Integer -> Maybe Char
my_nthele [] n = Nothing
my_nthele (x:xs) n | n == 0 = Just x
| otherwise = my_nthele xs (n-1)
顺便说一句,作为练习,尝试使您的函数更通用,以便也可以使用my_nthele [1..10] 3 == Just 4
。这并不难,但让我们一起玩Maybe
。