Почему я не могу использовать параметры функции в нотации записи записи?
Пример разбитого кода:
data Foo = Foo {
bar :: (Int -> Int)
}
baz = Foo { bar i = i*3 }
Почему это не возможно?
Ответ 1
Это просто синтаксическое ограничение - я подозреваю, что если бы эта функция была рассмотрена, она была бы отвергнута, потому что есть простые альтернативы. Кроме того, если бы он был поддержан, следующий вопрос состоял бы в том, почему не сопоставление шаблонов с несколькими предложениями, и в целом это просто заставило бы язык больше не для того, чтобы получить гораздо больше.
Вы можете использовать baz = Foo { bar = \x -> x*3 } вместо этого для конкретного случая, который вы указали, или определить вспомогательную функцию.