Статья является фактически переложением лекции Олега Киселёва на Haskell. Поэтому, используя Haskell, вы несомненно сможете опробовать все эти практики и даже с меньшими синтаксическими накладками.
Ваше воображение рисует вам правильную картину. Основная задача — построить какое-то синтаксическое дерево для предметной области, которое можно по-разному интерпретировать в зависимости от ситуации.
Данный тип говорит о том, что значение полиморфно.
Т.е. для любого типа T мы можем получить Exp[T] => T.
Тип (Exp[T] => T) forSome {type T} означает, что существует такой T, для которого мы получили Exp[T] => T. Просто забыли, для какого.
Разница у этих двух определений — в квантификаторе. для любого vs существует
Строго говоря, в scala нет понятия типа полиморфной функции, поэтому эта type lambda просто для понимания проблемы, стоящей перед нами в текущий момент
Не могли бы вы привести краткое сравнение с Foundation DB?
Статья является фактически переложением лекции Олега Киселёва на Haskell. Поэтому, используя Haskell, вы несомненно сможете опробовать все эти практики и даже с меньшими синтаксическими накладками.
Ваше воображение рисует вам правильную картину. Основная задача — построить какое-то синтаксическое дерево для предметной области, которое можно по-разному интерпретировать в зависимости от ситуации.
Данный тип говорит о том, что значение полиморфно.
Т.е. для любого типа
T
мы можем получитьExp[T] => T
.Тип (Exp[T] => T) forSome {type T} означает, что существует такой
T
, для которого мы получилиExp[T] => T
. Просто забыли, для какого.Разница у этих двух определений — в квантификаторе. для любого vs существует
Строго говоря, в scala нет понятия типа полиморфной функции, поэтому эта type lambda просто для понимания проблемы, стоящей перед нами в текущий момент