Сегодня мне снился замечательный сон. Мне приснилось, что я изобрел новый, совершенно потрясающий стиль программирования. Программы, написанные этим стилем, получались очень компактными и очень легко читаемыми. По крайней мере, во сне, когда я переписывал существующую программу в новом стиле, то она уменьшалась раз в десять. И очень легко читалась, потому что одним взглядом можно было охватить кусок, который раньше занимал несколько страниц, и сразу понять, что он делает и как.
Смысл новой концепции был таков.
Программа сильно распухает в объемах, потому что в ней используются длинные мнемонические идентификаторы. От этого надо уходить. Вот в перле, например, часто используется такая переменная, как '$_', которая каждый раз означает разное. Я же додумался, что было бы чертовски эффективно использовать символ '|' Этот символ — самый узкий из всех символов. Поэтому программа получится наиболее компактной.
Этот символ надо использовать везде — и в качестве переменных, и в качестве аргументов функций. Если у функции несколько аргументов, то надо использовать кэрринг и сводить ее к нескольким функциям с одним аргументом. В конце концов, мне удалось даже строго математически доказать, что любую программу на любом языке можно переписать с использованием одного единственного идентификатора '|' для всех переменных. Доказательство было очень коротким, в одну строчку, и очень изящным. К сожалению, проснувшись, не смог его воспроизвести. Используя примитивный препроцессор, который я написал во сне за пять минут, мне удалось добиться, чтобы символ '|' использовался также для названия всех классов и названия всех функций, и всех методов классов, и всех других идентификаторов, используемых в данном языке (язык при этом неважен, препроцессор не вникал в семантику, а просто по хитрому правилу заменял все найденные '|' на обычные иденитфикаторы, чтобы все это потом нормально скомпилировалось). Какую именно переменную, класс или функцию мы имеем в виду, написав '|' — зависело от контекста. Например, при первом упоминании | имеется в виду первый по счету класс, при втором упоминании — второй по счету класс, и так далее. Просто описывай классы в том порядке, в котором будешь использовать, и все само собой получится. Аналогично с функциями, и т.д.
Подумав еще, я решил, что названия функций можно вообще сделать пустыми. Все функции будут безымянными. Если встречается открывающая скобка — то компилятор или интерпретатор понимает, что мы вызываем безымянную функцию, и дальше в скобках будет ее единственный аргумент — '|'.
И вот я, наконец, проснулся, и побежал к компьютеру, пытаясь удержать в голове такую замечательную парадигму программирования и хоть что-нибудь успеть записать, потому что сны я быстро забываю.
Я срочно открыл нотпад и дрожащими руками записал, как будет выглядеть вызов безымянной функции от единственного аргумента |
(|)
Вглядевшись, я узнал что-то знакомое в этой картинке. Это было потрясением. До чего жестоко и коварно мое подсознание. Оно решило меня оскорбить. Оно могло бы просто приснить мне жопу. Но нет, это было бы слишком грубо и примитивно! Оно решило добиться, чтобы я сам себе нарисовал жопу, не подозревая об этом до последнего момента! Оно начало издалека. И блестяще подстроило мне ловушку, в которую я попался, как последний лох. :'(
Временами я слышу, как где-то в глубине души раздаются злорадные смешки.
П>Я срочно открыл нотпад и дрожащими руками записал, как будет выглядеть вызов безымянной функции от единственного аргумента |
П>(|)
П>Вглядевшись, я узнал что-то знакомое в этой картинке. Это было потрясением. До чего жестоко и коварно мое подсознание. Оно решило меня оскорбить. Оно могло бы просто приснить мне жопу. Но нет, это было бы слишком грубо и примитивно! Оно решило добиться, чтобы я сам себе нарисовал жопу, не подозревая об этом до последнего момента! Оно начало издалека. И блестяще подстроило мне ловушку, в которую я попался, как последний лох. :'(
П>Временами я слышу, как где-то в глубине души раздаются злорадные смешки.
Ну и нельзя не вспомнить Хаскель. Там есть вот такая вот "конструкция" (_|_)
Здравствуйте, Pentium133, Вы писали:
P>Здравствуйте, haba_haba_haba, Вы писали:
__>>Ну и нельзя не вспомнить Хаскель. Там есть вот такая вот "конструкция" (_|_)
P>Небольшое уточнение (_!_)
Полноценная жопа =) Кроме разреза еще и дырка есть!
Здравствуйте, Панда, Вы писали:
П>Я срочно открыл нотпад и дрожащими руками записал, как будет выглядеть вызов безымянной функции от единственного аргумента |
П>(|)
Это все потому, что теории не знаешь. Это штука на самом деле называется не |, а Y (он же Y-комбинатор).
Т.е. получается (Y). Что можно интерпретировать уже по разному :P.
P.S. Кстати, скобки там тоже лишние, на самом деле.
Берём любой базис из комбинаторной логики — и вуаля. Вообще нет имён переменных.
В хаскеле, помимо задницы (_|_), которая, вообще-то, в синтаксисе отсутствует и фигурирует лишь в описаниях, иногда встречаются сиськи (.)(.) — это если чересчур увлечься point-free программированием.
А поскольку язык позволяет давать инфиксным операторам любые имена из знаков пунктуации, можно такое кавайное ня устроить, что японцы будут плакать и рыдать.
Здравствуйте, IID, Вы писали:
IID>Здравствуйте, Pentium133, Вы писали:
P>>Небольшое уточнение (_!_)
IID>Полноценная жопа =) Кроме разреза еще и дырка есть!
Академическая точность!!! Не зря говорят, что Хаскель учёные придумали! Крайне внимательные мужики.
Сообщение заговорено потомственным колдуном, целителем и магом в девятом поколении!
Модерирование или минусование сообщения ведет к половому бессилию, венерическим заболеваниям, венцу безбрачия и диарее!