Получение значения 'a' из типа возвращаемого значения 'Maybe a' в Haskell
Это будет трудно объяснить, потому что в коде есть приличное количество подробностей, которые нужно знать, чтобы по-настоящему функционально понять, о чем я говорю. Но я сделаю все возможное, чтобы донести свою мысль до конца и надеюсь, что этого достаточно. Дайте мне знать, если нет, и я добавлю больше информации. Так:
У меня есть функция Haskelleval :: WExp -> Memory -> WValue
с кучей разных экземпляров себя для разных случаев. На данный момент знания оWExp
, Memory
, а такжеWValue
не актуально. Моя проблема в том, что для конкретного случаяeval
Я используюlookup
функция, которая принимает параметрeval
(строка в этом случае) ищет список пар ключ-значение для этой строки. Обратите внимание, что этоlookup
функция не входит в прелюдию; он определяется в файле .hs. Если строка найдена, возвращается значение, связанное с ней, но если оно не найдено,Nothing
возвращается Из-заNothing
случай, типlookup
на самом делеMaybe a
, гдеa
будетWValue
в этом случае. Так какeval
вернетMaybe WValue
Компилятор явно жалуется, что тип неWValue
.
Опять же, если вам нужна дополнительная информация об этих других типах, я могу предоставить ее. Это просто моя мысль, что может быть какой-то общий метод для извлеченияa
значение из любой функции, которая возвращаетMaybe a
, Если нет, я думаю, я буду искать решения в других местах :)