khorser
Haskell В исходниках часто встречается замечательная конструкция.
runST st = runSTRep (case st of { ST st_rep -> st_rep })
Интересно, почему не используется явный матчинг. Кто виноват?Примитивный язык, использующийся для бутстрапа, привычка или есть секретные ништяки за использование таких конструкций?
khorser
Haskell Долго выдумывал, как бы идиоматично скомбинировать функции, возвращающие Either, чтобы получить или Right первого успеха, или Left из всех ошибок, если ни одна функция не сработала. Чутьё не обмануло: Эдик Кметт таким образов определил <|> у Alternative для EitherT: hackage.haskell.org
khorser
Haskell ffi Вот есть у меня биндинги к некоей С++ либе. Из-за строк, указателей и состояния библиотеки в сигнатурах появляется IO. Настоящего I/O нет, поэтому хочется всё завернуть в свою не-IO монаду, которая сделает unsafePerformIO и обеспечит правильную последовательность вызовов посредством Reader или State. Гугл говорит, что подход не уникален и я не одинок: stackoverflow.com Но как-то настораживает отсутствие комментариев к ответу, который дал сам же спросивший. У кого-нибудь есть мысли?
khorser
Haskell hoogle Теперь "hoogle convert" не только не хуже "hoogle data", но и даже более гибуче: можно конвертировать .txt файлы именно нужной версии и ссылаться на правильную локальную документацию: github.com