Новый для вяза здесь, и поначалу он сводит меня с ума, не зная тонкостей этого придирчивого языка (даже после прочтения sh ** нагрузки об этом, потому что он такой разный и привередливый ...природа функционального языка) поэтому, когда вы пытаетесь сделать простую вещь, это как сначала дергать волосы.
Я получаю следующую ошибку:
The right side of (==) is causing a type mismatch.
29| get 0 arrayOfValues == 'X'
^^^
(==) is expecting the right side to be a:
Maybe Char
But the right side is:
Char
Hint: With operators like (==) I always check the left side first. If it seems
хорошо, я предполагаю, что этоисправить и проверить правильную сторону.Таким образом, проблема может заключаться в том, как взаимодействуют левый и правый аргументы.Тест:
it "blah blah blah" <|
let
someArray =
[ 'P', ' ' ]
in
expect (MyModule.doSomething someArray 'P') to equal 1
MyModule
doSomething : List Char -> Char -> Int
doSomething arrayOfValues symbol =
let
grid =
fromList arrayOfValues
found =
get 0 arrayOfValues == symbol
in
if found then
1
else
0
Теперь я предполагаю, но не уверен, что он получает ничего или что-то при попытке извлечь первое значение из моего массива, но не уверен.Может Чар, я полагаю, ничего не возвращает?Донно, возможно, у меня тоже возникают другие проблемы.
Я бы хотел, чтобы код выше работал, а затем рефакторинг ... Я уверен, что, вероятно, есть более элегантный способ кодирования того, что я кодировалвыше, но первым делом, исправление этой ошибки и лучшее понимание ее с помощью существующего кода.Сообщение об ошибке, хотя приятно, не так очевидно для меня, как и что обрабатывать.У меня есть предположения, но я не совсем уверен, как справиться с поведением здесь того, что вызывает проблему.