Как использовать такие типы: введите 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"

и я получу соответствующее значение.