Каждый раз, когда я пытаюсь загрузить модуль, содержащий func1, я сталкиваюсь с ошибкой, и я не знаю, как ее исправить.
func2 и func3 работают независимо и выполняют именно то, что должныdo.
func1 xs = [x| let x = func2 (-c) xs, (_,c) <- func3 xs]
func1 ожидает строку и должен доставить другую строку. xs - входная строка, x - выходная строка. func 2 ожидает Int и String, c - Int и создает другую String. func3 ожидает String и выдает Tuple. (_, c) - Выход, первый элемент _, потому что он не имеет отношения к этой функции, а второй элемент - целое число.
Нет выходных данных, и я получаю следующее сообщение об ошибке:
Programm.hs:205:18: error:
Variable not in scope: c :: Integer
|
205 | func2 (-c) xs
| ^
Programm.hs:208:16: error:
* Couldn't match type `[Char]' with `Char'
Expected type: Char
Actual type: String
* In the expression: x
In the expression:
[x | let x = func2 (- c) xs, (_, c) <- func3 xs]
In an equation for `decypher':
func1 xs = [x | let x = func2 (- c) xs, (_, c) <- func3 xs]
|
208 | func1 xs = [x| let x = func2 (-c) xs, (_,c) <- func3 xs]
|
Programm.hs:208:36: error:
Variable not in scope: c :: Int
|
208 | func1 xs = [x| let x = func2 (-c) xs, (_,c) <- func3 xs]
|
Failed, no modules loaded.
Теперь мои вопросы: почему он говорит, что c не является целым числом, когда я определил его (я также попробовал это с «let (_, c) = func3 xs») в качестве второго элементавывод func3, который обязательно является целым числом?
Почему ожидается, что x будет Char, если на выходе func2 обязательно будет String?
Заранее спасибо, и пожалуйстатерпение со мной, я только учу Haskell: *