Стрелка должна появляться только в случаях выражения и анонимных функций - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь проверить, существует ли данный ключ в dict заданном ключе. Я относительно новичок в Elm и функциональном программировании, поэтому я не уверен, где я ошибаюсь.

Я получаю ошибку:

Стрелка должна появляться только в выражениях случаев и анонимных функциях. Может быть Вы хотите> или> = вместо?

Вот моя попытка вернуть true или false

dictExist : comparable -> Dict comparable v -> Bool
dictExist dict key =
    Dict.get key dict        
            Just -> True 
            Maybe.Maybe -> False

В другой ноте я тоже попробовал Dict.member, но тоже безуспешно и предположил, что вместо Dict.get я должен использовать Dict.member для этого ...

1 Ответ

6 голосов
/ 28 мая 2019

Есть четыре проблемы с вашим кодом:

  1. Как указывает ошибка, вы используете стрелку вне выражения case ... of.
  2. Типы MaybeКонструктор Just имеет сопутствующее значение, элемент из dict, но вы ни к чему не привязываете его.Вы должны явно отказаться от него, назначив его шаблону подстановки, _.
  3. Maybe.Maybe не является конструктором.Это должен быть Nothing, который является другим конструктором типа Maybe.
  4. Вы изменили порядок аргументов dictExist

Исправив эти проблемы,этот код должен работать:

dictExist : comparable -> Dict comparable v -> Bool
dictExist key dict =
    case Dict.get key dict of        
        Just _ -> True 
        Nothing -> False

Но на самом деле это просто повторная реализация Dict.member, которая имеет точно такую ​​же сигнатуру типа .Поэтому замена любого использования dictExist на Dict.member должна работать точно так же.

...