Получение значения '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, Если нет, я думаю, я буду искать решения в других местах :)

Ответы на вопрос(1)

Ваш ответ на вопрос