Я новичок в языке программирования Haskell, и я пытаюсь создать тип данных для представления двоичных чисел и написать функцию для оценки ее десятичного значения.Построить двоичные числа в haskell
Я хочу, чтобы представить эту BNF для бинарного numberals
Numeral ::= 0 | 1 | Numeral 0 | Numeral 1
я построил свой тип данных в Haskell, используя подходящие модели и имена полей, как этого
data Numeral = Zero | One | Num {number :: Numeral, suffex :: Int}
и я создал функция
valuate Zero = 0
valuate One = 1
valuate Num(n:0) = 2 * valuate (n)
valuate Num(n:1) = 2 * valuate (n) + 1
valuate Num(n:ns) = error "Not binary number"
Но я получаю ошибку компиляции «Исключение для« оценки »имеет различное количество аргументов»
Я пытаюсь понять, где ошибка, которую я сделал, я передаю цифру методу в каждом шаблоне с другим значением конструкции и даже когда я называю (2 * оценка n), я передаю «n», который является Numberal в конструкции «Num»
Является ли проблема в моем типе данных или шаблонах функций?
Отличный ответ и быстрый также. спасибо. – Ahmad
Конечно! Рад помочь. – kini