Исключительно бессмысленно потраченный день

Aug 29, 2018 20:03

Ну т.е. не так, как вчера, когда единственное мое достижение - это посеяный на работе планшет (похоже, безвозвратно), но сегодня тоже.

Разбираюсь я, значит, с тем, как таскать в свежем хаскеле версии 7.8.3 информацию  о размере массива в типе.  (я в курсе, что на дворе уже 8.*, у меня старая убунта. Но это, в общем, не важно - конкретно эта часть ghc не изменилась). Вроде разобрался. Теперь надо написать игрушечный пример. Но мы же не ищем легких путей, писать поверх Data.Vector и тем более Data.Array ниже нашего достоинства. Читаем про то, что есть в GHC.Prim, внимательно изучаем примопы с Array# и долго втыкаем на realWorld# :: StateT# RealWord и на перлы в духе (#a#) в сигнатурах типов. Тратим полдня на разборки, пишем ровно одну функцию. Потом находим пакет primitive на хакадже, который делает изрядную часть работы за нас.

Зато узнали много нового про устройство стека в рантайме GHC. Непонятно зачем.

Для привлечения внимания: два старых, но интересных поста для изучения

http://www.well-typed.com/blog/94/
http://www.well-typed.com/blog/95/

Три полезных пакета на hackage

http://hackage.haskell.org/package/reflection
http://hackage.haskell.org/package/primitive
http://hackage.haskell.org/package/primitive-extras

Отдельно хочется сказать про reflection. Статья от Олега, по которой он сделан, откровенно мозговыносящая для человека не в теме. А вот пакет довольно прост и понятен в использовании.

нытьё, #a, haskell

Previous post Next post
Up