Как использовать такие типы: введите a = b - > c в haskell
Я хочу создать тип, который хранит имя и значение переменной,так что я сделал это:
type Variable = String
type Val = Int
type Store = Variable -> Val
теперь, как я могу использовать этот магазин?
например я хочу написать функцию(fetch), который возвращает значение переменной в соответствии с ее магазине или функция(нач) для инициализации всех переменных (присвоить значение по умолчанию, например 0):
fetch:: Store -> Variable -> Val
initial:: Store
Как я могу это сделать?
2 ответов
код Store
type - это просто псевдоним для определенного вида функции, я мог бы написать его как
constStore :: Store
constStore _ = 1
вы могли бы сделать более сложный:
lenStore :: Store
lenStore var = length var
-- or
-- lenStore = length
затем fetch
это просто приложение функции
fetch :: Store -> Variable -> Val
fetch store var = store var
магазины-это функции, поэтому вы можете просто применить магазин к переменной:
fetch :: Store -> Variable -> Val
так
fetch :: (Variable -> Val) -> Variable -> Val
fetch store var = store var
но это было бы проще написано
fetch = id
или вообще опущено, так что если myStore :: Store
, Я могу
myStore "myVariable"
и я получу соответствующее значение.