Haskell: об одном методе реализации функций с переменным числом параметров

– А видела ты Черепаху «Как бы»?

– Нет, – сказала Алиса. – Я даже не знаю, кто это такой.

– Как же, – сказала Королева. – Это то, из чего делают «Как бы черепаший суп».

                  Льюис Кэрролл, 
                           «Алиса в Стране чудес»

— Судя по твоим речам, ты хорошо знаешь Фангорн? — спросил в ответ Арагорн.

— Какое там! — отозвался старик. — На это ста жизней не хватит. Но я сюда иной раз захаживаю.

                 Джон Р. Р. Толкиен, 
                          «Властелин Колец» — к слову о моём знании Haskell ;)

Homines dum docent, discunt. (Объясни другим — сам поймёшь.)

                 народная латинская поговорка


Все знают, что любая функция Haskell по своей сути является функцией одного параметра. Функции «как бы» нескольких параметров просто принимая первый аргумент, возвращают другую функцию, принимающую второй аргумент (исходной функции) и обратно возвращающую функцию и т.д. до финальной функции, которая уже возвращает значение не функционального типа (каррирование).


Казалось бы о каком переменном числе параметров может идти речь при таком раскладе? Однако поразмыслив, посмотрев исходники printf или просто почитав wiki.haskell становится очевидным, что как раз ФП даёт ключ к достаточно красивому, хотя и несколько «казуистическому» решению этой задачи.


В настоящей публикации я рассмотрю один из способов реализации такого механизма на простых примерах, а также предложу некоторое обобщённое решение на базе Template Haskell, для превращения семейства обычных функций с последним параметром типа список в функцию с «как бы с переменным числом параметром» (далее по тексту просто «с переменным числом параметром»).
Читать дальше →
Haskell: об одном методе реализации функций с переменным числом параметров
Source: habrahabr

[Из песочницы] Прекрасные конечные автоматы на Rust

Последнее время я много размышлял о шаблонах проектирования и приемах, которые мы используем в программировании. Это и в самом деле прекрасно — начать исследовать проект и видеть знакомые шаблоны и стили, которые ты уже не раз встречал. Это облегчает понимание проекта и дает возможность ускорить работу.

Иногда ты работаешь над новым проектом и понимаешь, что тебе нужно сделать что-то также, как ты делал это в прошлом проекте. Это может быть не часть функционала или библиотека, это может быть то, что нельзя обернуть в изящный макрос или маленький контейнер. Это может быть просто шаблон проектирования или структурная концепция, которые хорошо решают проблему.

Один интересный шаблон, часто применяемый к таким проблемам — «Конечный автомат». Предлагаю потратить немного времени, чтобы понять, что именно имеется ввиду под этим словосочетанием, и почему же это так интересно.

Читать дальше →
[Из песочницы] Прекрасные конечные автоматы на Rust
Source: habrahabr

Пост №3034136

Автор: kain_pl

Зеленкой по оппозиции, или Как Навальный в Барнауле штаб открывалНеизвестные (хмм…) попытались предотвратить открытие предвыборного штаба Алексея Навального в Барнауле, облив оппозиционера зеленкой. Карикатурист Сергей Елкин о том, откуда берутся такие «зеленкометатели».Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»http://polit.reactor.cc/post/3034136″ }, «headline»: «Зеленкой по оппозиции, или Как Навальный в Барнауле штаб открывал / елкин :: Навальный :: политика :: зеленка», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%B5%D0%BB%D0%BA%D0%B8%D0%BD-%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B0-%D0%9D%D0%B0%D0%B2%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D0%B7%D0%B5%D0%BB%D0%B5%D0%BD%D0%BA%D0%B0-3733154.jpeg», «height»: 529, «width»: 940 }, «datePublished»: «2017-03-20T16:04:00+03:00», «dateModified»: «2017-03-20T16:04:00+03:00», «author»: { «@type»: «Person», «name»: «kain_pl» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «Неизвестные (хмм…) попытались предотвратить открытие предвыборного штаба Алексея Навального в Барнауле, облив оппозиционера зеленкой. Карикатурист Сергей Елкин о том, откуда берутся такие «зеленкометатели».» }
Комментировать 
Пост №3034136
Source: Joyreactor

Скидки на приложения и игры для Android: 20 марта

Скидки на приложения и игры актуальны только на момент выхода публикации. В этом выпуске: Automatic Call Recorder Pro — приложение, которое позволит вам записывать телефонные диалоги, а потом […]
Скидки на приложения и игры для Android: 20 марта
Source: 4pda

Пост №3034117

Автор: GameInfo


Когда хозяин ленивая скотина

ссылка на гифку


Развернуть



{
«@context»: «http://schema.org»,
«@type»: «BlogPosting»,
«mainEntityOfPage»:{
«@type»:»WebPage»,
«@id»:»/post/3034117″
},
«headline»: «Когда хозяин ленивая скотина / коты :: уборка»,
«image»: {
«@type»: «ImageObject»,
«url»: «http://img1.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%82%D1%8B-%D1%83%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-3733129.gif»,
«height»: 400,
«width»: 640 },
«datePublished»: «2017-03-20T15:51:27+03:00»,
«dateModified»: «2017-03-20T15:51:27+03:00»,
«author»: {
«@type»: «Person»,
«name»: «GameInfo»
},
«publisher»: {
«@type»: «Organization»,
«name»: «JoyReactor.cc»,
«logo»: {
«@type»: «ImageObject»,
«url»: «http://joyreactor.cc/images/joyreactor_ie6.png»,
«width»: 207,
«height»: 54
}
},
«description»: «»
}

Комментировать 
Пост №3034117
Source: Joyreactor

Хакеры снова взломали Windows и macOS

В рамках конференции по безопасности CanSecWest в Ванкувере, Канада, прошёл десятый по счёту ежегодный турнир хакеров Pwn2Own. Организатором и спонсором этого мероприятия является организация Zero Day […]
Хакеры снова взломали Windows и macOS
Source: 4pda

Голос Агента 47 предложил превратить Hitman в Pokemon GO

Пока второй сезон эпизодического сериала Hitman
находится в разработке, своим видением дальнейшего развития франшизы поделился актёр
театра и кино Дэвид Бэйтсон. Именно он все эти годы был ответственен […]
Голос Агента 47 предложил превратить Hitman в Pokemon GO
Source: 4pda

Пост №3034080

Автор: Gruber

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3034080″ }, «headline»: «наебалово :: gif :: пойло», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/gif-%D0%BF%D0%BE%D0%B9%D0%BB%D0%BE-%D0%BD%D0%B0%D0%B5%D0%B1%D0%B0%D0%BB%D0%BE%D0%B2%D0%BE-%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0-3733069.gif», «height»: 344, «width»: 344 }, «datePublished»: «2017-03-20T15:19:22+03:00», «dateModified»: «2017-03-20T15:19:22+03:00», «author»: { «@type»: «Person», «name»: «Gruber» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3034080
Source: Joyreactor

Пост №3034078

Автор: Chaynik

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3034078″ }, «headline»: «кот», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%82-%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0-3733067.jpeg», «height»: 470, «width»: 686 }, «datePublished»: «2017-03-20T15:17:48+03:00», «dateModified»: «2017-03-20T15:17:48+03:00», «author»: { «@type»: «Person», «name»: «Chaynik» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3034078
Source: Joyreactor

Интернет по всему миру: Япония и Сингапур

image

«Интернет должен быть, как воздух, всегда» — девиз японского провайдера OCN отражает вектор развития Японии и Сингапура. Обе страны в сжатые сроки прошли тернистый путь, совершив великое экономическое чудо, каждая по-своему. Развитие интернета в этих странах довольно сильно отличается от тех, о которых мы писали ранее. Пример Японии и Сингапура показывает, каких высот может достичь страна и её технологическое развитие, если у руля будут находиться специалисты своего дела и настоящие управленцы. Программы, которые создавались министерствами и правительствами Японии и Сингапура, прописаны максимально детально, а результат реализации программ говорит сам за себя. Попробуем разобраться, как этим странам удалось совершить столь впечатляющий рывок.

Читать дальше →
Интернет по всему миру: Япония и Сингапур
Source: geektimes