Если вгруг решите поиграться с Piet, вот вам online IDE для оного: http://www.rapapaing.com/blog/?page_id=6
Подкинули на днях интересный образчик "языка", если можно так сказать: https://github.com/aaronduino/asciidots
Описание гласит: "AsciiDots - The result of combining ascii art, electrical engineering, and programming". Программы-схемы выглядят так (это вычислитель факториала):
Примечательно, что в отличие от большинства других языков с "2D-синтаксисом" (
Описание гласит: "AsciiDots - The result of combining ascii art, electrical engineering, and programming". Программы-схемы выглядят так (это вычислитель факториала):
/---------*--~-$#-&
| /--;---\| [!]-\
| *------++--*#1/
| | /1#\ ||
[*]*{-}-*~<+*?#-.
*-------+-</
\-#0----/
Примечательно, что в отличие от большинства других языков с "2D-синтаксисом" (
BeFunge, False, того же Piet) этот - не стековый. И вообще, программы на языке действительно похожи на электрические схемы с путешествующими по ним электронами. Занятная штука! Написана на #pythonGitHub
aaronjanse/asciidots
The combinination of ascii art, electrical engineering, and programming. - aaronjanse/asciidots
Процесс отладки программы (Телеграм пожал гифку, так что лучше смотреть ту, что в README репозитория):
https://raw.githubusercontent.com/aaronduino/asciidots/master/dots_debug.gif
https://raw.githubusercontent.com/aaronduino/asciidots/master/dots_debug.gif
Мне этот
Выглядят Wireworld-схемы так: https://upload.wikimedia.org/wikipedia/commons/1/13/Wireworld_XOR-gate.gif
#cellular_automata
AsciiDots, почему-то, напомнил клеточный автомат WireWorld (https://en.wikipedia.org/wiki/Wireworld). Последний тоже поделирует электрические схемы, правда только логические, но зато полон по Тьюрингу!Выглядят Wireworld-схемы так: https://upload.wikimedia.org/wikipedia/commons/1/13/Wireworld_XOR-gate.gif
#cellular_automata
Если вы вдруг пишете на #haskell, то, возможно, накопили своих пунктиков по поводу стендартной
Многие хаскелисты знают, что Haskell позволяет использовать свою прелюдию - свой набор умолчаний, удобный для конкретного проекта, или же просто более близкий по духу. Прелюдий уже понаписано довольно много и выбрать среди них подходящую (или решить, что настало время писать свою - поверьте, это не то-то плохое :)) довольно сложно.
Поэтому так ценны подобные странички: https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc - здесь упомянуты многие популярные прелюдии, и для каждого образчика указано краткое описание "почему?"/"для кого?", плюсы и минусы и проч. Организована информация удобно и охват имеет широкий. Буду пользоваться :)
Prelude (для тех, кто не в курсе, это такой неймспейс, который импортируется неявно в любые исходники и содержит (или экспортирует) предметы первой необходимости типа print, map и +).Многие хаскелисты знают, что Haskell позволяет использовать свою прелюдию - свой набор умолчаний, удобный для конкретного проекта, или же просто более близкий по духу. Прелюдий уже понаписано довольно много и выбрать среди них подходящую (или решить, что настало время писать свою - поверьте, это не то-то плохое :)) довольно сложно.
Поэтому так ценны подобные странички: https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc - здесь упомянуты многие популярные прелюдии, и для каждого образчика указано краткое описание "почему?"/"для кого?", плюсы и минусы и проч. Организована информация удобно и охват имеет широкий. Буду пользоваться :)
Интересная штука - Urn, #lisp (Lisp-1) для #lua:
https://squiddev.github.io/urn
Умеет compile time макросы, выдаёт самодостаточные Lua-файлы, REPL тоже в наличии, разумеется. Есть pattern matching, что приятно. Есть threading macroses, как в #clojure. Вобщем, неплохой вариант в ситуации, когда нужно что-то написать для Lua VM, но именно на Lua писать не хочется или же просто хочется S-выражений :)
https://squiddev.github.io/urn
Умеет compile time макросы, выдаёт самодостаточные Lua-файлы, REPL тоже в наличии, разумеется. Есть pattern matching, что приятно. Есть threading macroses, как в #clojure. Вобщем, неплохой вариант в ситуации, когда нужно что-то написать для Lua VM, но именно на Lua писать не хочется или же просто хочется S-выражений :)
Вот прямо сейчас проходит голосование за участников LOWREZJAM 2017 - это такой конкурс игроделов, где оные соревнуются в написании игр, работающих в разрешении 64x64 пикселей. Ограничение, прямо скажем, довольно суровое! Но тем интереснее участникам раскрывать свой творческий потенциал!
Ссылка: https://itch.io/jam/lowrezjam2017
#gamedev #pixelart
Ссылка: https://itch.io/jam/lowrezjam2017
#gamedev #pixelart
itch.io
#LOWREZJAM 2017
A game jam from 2017-07-31 to 2017-08-23 hosted by JackOatley. Who? The LOWREZJAM was originally devised and hosted by Devi Ever . However I, Jack Oatley , noticed that it had been over a year since the last jam a...
Победитель прошлого года:
http://i.imgur.com/IjwJZkZ.gif
(поиграть можно тут: https://cronus.itch.io/umbri)
http://i.imgur.com/IjwJZkZ.gif
(поиграть можно тут: https://cronus.itch.io/umbri)
Ещё одна утилитка на #rust: https://the.exa.website/
Быстрая (по словам авторов) и более современная замена ls. Умеет выводить различные дополнительные данные, сразу выводит размер в человекочитаемом виде, может отображать git-статус - приятная штука.
Ах да, ещё может заменить собой tree - тоже умеет выводить иерархию файлов и папок, но уже с дополнительной информацией.
Быстрая (по словам авторов) и более современная замена ls. Умеет выводить различные дополнительные данные, сразу выводит размер в человекочитаемом виде, может отображать git-статус - приятная штука.
Ах да, ещё может заменить собой tree - тоже умеет выводить иерархию файлов и папок, но уже с дополнительной информацией.
Внезапно прорекламирую канал: https://t.me/kanaflow
Внимание, внутри теоркат, типота, вот это всё! Но материал подаётся автором по мере изучения оного оным, поэтому сложность, очевидно, будет нарастать плавно, а пока всё достаточно просто и понятно :)
Внимание, внутри теоркат, типота, вот это всё! Но материал подаётся автором по мере изучения оного оным, поэтому сложность, очевидно, будет нарастать плавно, а пока всё достаточно просто и понятно :)
Telegram
это кана
Изучаю и делюсь своими знаниями в функциональном программировании, теории типов, теории категорий, алгебре.
Я: @kana_sama.
Группа vk.com: https://vk.com/home_kana
Я: @kana_sama.
Группа vk.com: https://vk.com/home_kana
Forwarded from это кана
ADT - произведение и копроизведение типов
Тип можно трактовать как множество значений (На самом деле это не всегда так). Мощность типа - количество элементов в этом множестве.
Произведение типов - декартово произведение множеств, то есть множество всех возможных пар, где первый элемент - элемент первого множества, а второй - второго.
Мощность произведения двух множеств равна произведению мощностей множителей.
Пример в хаскеле:
Меченное объединение, сумма или же копроизведение типов - объединение двух множеств так, что каждый элемент нового множества помечается исходным множеством, благодаря чему новый тип будет содержать все копии значений из исходных множеств.
Как видно, каждый элемент нового множества помечен исходным множеством, поэтому число 3 встречается дважды, ведь
Очевидно, мощность такого типа равна сумме мощностей слогаемых.
В хаскеле суммы типов создаются с помощью символа
Тип можно трактовать как множество значений (На самом деле это не всегда так). Мощность типа - количество элементов в этом множестве.
Произведение типов - декартово произведение множеств, то есть множество всех возможных пар, где первый элемент - элемент первого множества, а второй - второго.
A = {a, b, c}
B = {x, y}
A×B = {(a, x), (a, y), (b, x),
(b, y), (c, x), (c, y)} Мощность произведения двух множеств равна произведению мощностей множителей.
|A × B| = |A| × |B|
Пример в хаскеле:
-- тут мы говорим, что `x`
-- имеет тип `(Int, String)`
x :: (Int, String)
-- а тут мы говорим, какое у
-- x значение
x = (1, "hello")
-- делаем тип IntStringPair
-- значение которого является пара
-- из числа и строки.
-- Для создания значения этого типа
-- используется конструктор MkIntStringPair
-- который принимает число и строку
-- и создает элемент типа IntStringPair
data IntStringPair = MkIntStringPair Int String
y :: IntStringPair
y = MkIntStringPair 1 "hello"
-- Конструктор и тип могут иметь
-- одно название, они не будут
-- пересекаться, ведь типы можно
-- использовать только в сигнатуре,
-- а конструкторы только в выражениях
data Triple a b c = Triple a b c
z :: Triple Int String Int
z = Triple 1 "hello" 2
Меченное объединение, сумма или же копроизведение типов - объединение двух множеств так, что каждый элемент нового множества помечается исходным множеством, благодаря чему новый тип будет содержать все копии значений из исходных множеств.
A = {1, 2, 3}
B = {3, 4}
A + B = {A 1, A 2, A 3, B 3, B 4}Как видно, каждый элемент нового множества помечен исходным множеством, поэтому число 3 встречается дважды, ведь
A 3 ≠ B 3. Очевидно, мощность такого типа равна сумме мощностей слогаемых.
|A + B| = |A| + |B|
В хаскеле суммы типов создаются с помощью символа
| в определении типа (или же с помощью определений конструкторов с GADTs).data Either a b = Left a | Right b
x, y :: Either Int String
x = Left 10
y = Right "hello"
data Bool = False | True
-- изоморфно Either () ()
-- где () - единичное множество,
-- то есть множество из одного элемента
-- () = {()}
-- (Важно не путать ()-тип и ()-значение)
z, u :: Bool
z = False -- Left ()
u = True -- Right ()
Просто оставлю это здесь:
https://github.com/LightningJimmyJoeJohnson/Anime-Girls-Holding-Programming-Books
Вдруг вам понадобится картинка с анимешной девицей и книгой по вашему любимому ЯП :)
Что примечательно, по кол-ву присутствий на картинках с большим отрывом лидирует SICP, что с одной стороны радует, с другой - вовсе не удивительно :D
#anime #meme #picture
https://github.com/LightningJimmyJoeJohnson/Anime-Girls-Holding-Programming-Books
Вдруг вам понадобится картинка с анимешной девицей и книгой по вашему любимому ЯП :)
Что примечательно, по кол-ву присутствий на картинках с большим отрывом лидирует SICP, что с одной стороны радует, с другой - вовсе не удивительно :D
#anime #meme #picture
Довольно интересная статейка на #haskell WiKi: https://wiki.haskell.org/Haskell_logos/New_logo_ideas - тут собраны работы, участвовавшие в The great 2009 Haskell logo contest (кстати, именно в рамках этого конкурса был выбран текущий логотип!).
Некоторые образчики очень занятны и даже довольно круты, советую пролистать и приобщиться, даже если вы не интересуетесь #haskell (зря!)
P.S. Тут ещё немного текста и картинок по истории лого: http://www.willamette.edu/~fruehr/logos/intro.html
Некоторые образчики очень занятны и даже довольно круты, советую пролистать и приобщиться, даже если вы не интересуетесь #haskell (зря!)
P.S. Тут ещё немного текста и картинок по истории лого: http://www.willamette.edu/~fruehr/logos/intro.html
Тема криптовалют и #blockshain в целом нынче очень популярна. Вот и в #haskell мире движуха пристутсвует - пишут "на коленке" игрушечные криптовалютки, вот это всё. Пример такого проекта: https://github.com/tdietert/nanocoin
Проект достаотчно интересный с точки зрения знакомства с тем "как там всё работает". Тут вам и P2P сеть и Proof-of-work. А ещё автор ставит себе целью подробно всё документировать - отличная возможность приобщиться к среднему по сложности проекту на Haskell, реализующему хайповую штуку и поучиться на живом примере!
P.S. Буквально вчера выложили доклад автора нанокоина: https://www.youtube.com/watch?v=wjyiOXRuUdo - тут и о проекте говорится и в целом о криптовалютах
Проект достаотчно интересный с точки зрения знакомства с тем "как там всё работает". Тут вам и P2P сеть и Proof-of-work. А ещё автор ставит себе целью подробно всё документировать - отличная возможность приобщиться к среднему по сложности проекту на Haskell, реализующему хайповую штуку и поучиться на живом примере!
P.S. Буквально вчера выложили доклад автора нанокоина: https://www.youtube.com/watch?v=wjyiOXRuUdo - тут и о проекте говорится и в целом о криптовалютах
GitHub
adjoint-io/nanocoin
A toy currency. Contribute to adjoint-io/nanocoin development by creating an account on GitHub.
Меня порой спрашивают, какую книгу стоит читать желающему начать учить #haskell. Обычно я советовал "Learn You a Haskell for Great Good" - я сам на ней вырос, вот и другим рекомендую. И я всё ещё считаю эту книгу хорошей для новичков в ФП. Однако теперь я буду давать ссылку на этот пост: https://medium.com/@_bravit/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-haskell-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8B-712c1f5b7749
Ссылка ведет на статью с выводами, которые сделал Виталий Брагилевский, взяв на себя труд рассмотреть все более-менее популярные книги для начинающих изучать Haskell. Ссылки на отзывы об отдельных книгах ищите по ссылкам в вышеуказанной статье. ИМХО, стоит обратить внимание на книгу Курта - я и сам на неё натыкался, и с виду она мне понравилась, но одно дело - мое мнёние, совсем другое - мнение человека, который Haskell преподаёт (кстати, Виталий учит не только хаскелю, но и, например, Idris!).
Ссылка ведет на статью с выводами, которые сделал Виталий Брагилевский, взяв на себя труд рассмотреть все более-менее популярные книги для начинающих изучать Haskell. Ссылки на отзывы об отдельных книгах ищите по ссылкам в вышеуказанной статье. ИМХО, стоит обратить внимание на книгу Курта - я и сам на неё натыкался, и с виду она мне понравилась, но одно дело - мое мнёние, совсем другое - мнение человека, который Haskell преподаёт (кстати, Виталий учит не только хаскелю, но и, например, Idris!).
Medium
Книги по программированию на Haskell: выводы
Кажется, я описал все изданные за последние годы книги по Haskell. Большого смысла говорить о более старых книгах нет: Haskell развивается…
Reddit-обсуждение статьи про сравнение GHCJS и PureScript (вместе с различными библиотеками для оных) в плане быстродействия. Причем связки из языка и фреймворка/библиотеки сравниваются и между собой и с популярными конкурентами из мира JavaScript. И даже Elm присутствует "до кучи". Сравниевается производительность в разного вида задачах, связанных с изменением DOM - как точечным, так и массовым. В конце статьи автор приводит своё мнение о каждом из попробованных им решений, в т.ч. и касательно удобства использования, что тоже интересно.
https://www.reddit.com/r/haskell/comments/6z8e3m/benchmarks_ghcjs_reflex_miso_purescript_thermite/
https://www.reddit.com/r/haskell/comments/6z8e3m/benchmarks_ghcjs_reflex_miso_purescript_thermite/
reddit
r/haskell - Benchmarks: GHCJS (Reflex, Miso) & Purescript (Thermite, Pux, Halogen)
103 votes and 62 comments so far on Reddit