为什么当我在haskell编译器中运行时,它只是说在解析输入“ if”时出现错误

该问题说我需要计算一个字符列表中的位数,并将返回列表中的位数。我可能会使用isDigit,而我需要递归进行

NullPointerException

它在输入“ if”中显示解析错误

wenhong1314 回答:为什么当我在haskell编译器中运行时,它只是说在解析输入“ if”时出现错误

const first_array = [10,20,30]; let final_array = []; const extra_value = 150; final_array[0] = first_array[0] + extra_value; final_array[1] = first_array[1] + extra_value; final_array[2] = first_array[2] + extra_value; 本身是一个表达式;它会产生0或1,然后将其添加到递归调用的返回值。您不需要变量。

if

您可以利用为counta :: [Char] -> Int counta [] = 0 counta (x:xs) = (if isDigit x then 1 else 0) + counta xs 定义的Enum实例来缩短此时间,该实例将Bool转换为True,并将1转换为{{1} }。

False

使用定义0的{​​{1}}语句的正确方法是

counta (x:xs) = fromEnum (isDigit x) + counta xs
,

您的代码中存在多个问题

  • counta [] = []返回一个列表,但您已声明counta :: [Char]->Int,这表明它应该返回一个整数
  • 您不需要括号即可应用函数,应写isDigit x而不是isDigit(x)
  • 正如Willem所指出的那样,在let块之外没有in的情况下不能使用do,也不能对变量进行突变
本文链接:https://www.f2er.com/3152913.html

大家都在问