Дамы и господа! Не проходите мимо! Только сегодня в нашем бродячем цирке великий йог и аскет Лямбдагарбха продемонстрирует уникальный фокус материализации! Имея полиморфную функцию, оперирующую произвольными типами (полифорфными, не конкретными), функциями из них и туплами, только зная ее тип и умея ее вызывать, он материализует ее исходник, даже
(
Read more... )
Comments 31
Reply
Reply
Reply
Reply
1) Полезно иметь возможность наколбасить в разных местах кусочки кода, которые потом объединяются в единое целое. Зачастую выходит так, что эти кусочки имеют смысл только в контексте других (например, используют переменные, объявленные где-то еще), поэтому выразить их в виде HOAS не получится. Что делать?
2) Также полезно в научных целях разбирать сниппеты на запчасти. Как это записать в HOAS? Как таким запчастям назначить типы?
Reply
Reply
А теперь вопрос. Можно ли сделать такой реифай, чтобы можно было написать просто "reify myfun", без всяких многоточий? Можно ли реифицированную сигнатуру генерировать каким-нибудь хитрым тайпклассом, например?
Ну и плюс. Как это обобщить для конкретных типов, например, если myfun принимает Int и возвращает Int?
Reply
Просто "reify myfun" было бы здорово, но как этого добиться я пока не знаю.
С конкретными типами эта магия не работает, ибо все строится на том, что передаваемая функция всеядна и переварит волшебную пилюлю. Так что практического применения тут немного, только в цирке выступать.
Reply
Можешь вот это пояснить? Получается, есть какая-то алгебраическая структура, соответствующая метапрограммированию (т.е. манипуляциям над Code[T])? Какие у нее есть интересные законы?
Reply
http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Applicative.html
Об аппликативных функторах (коими в ЯП все монады являются, в частности) и их чудодейственных свойствах написаны тома.
Reply
Leave a comment