
Oleg
19.10.2018
10:19:00
Ограничения синтаксиса, это когда ты не пишешь нормальный код, даже если можешь, потому что ппц синтаксис говно
Изоморфно оно изоморфно, но я то не транслятор, а глупая бионейронка

Андрей
19.10.2018
10:19:50
так несколько раз упоминал выше - напиши свой транслятор в свой синтаксис. 21 век на дворе

Oleg
19.10.2018
10:21:47
Я напишу, почему-то сложно заставить его остальным поддерживать и подсвечивать, читать и отлаживать.
А ещё требуют какие-то денотационные и трансляционные семантики на бумаге описать. Фу

Google

Index
19.10.2018
10:21:58
вы так говорите, как будто не подозреваете, что можно тот же хаскель изоморфно отобразить на лисп-синтаксис ) демонстрируете вышеупомянутый блаб-парадокс в чистом виде
Можно, только нужно будет ввести ключевые слова, например
\x -> x
надо будет представить как
(lam (x) (x))
и вот если это в итоге для макросов тупо представить как дерево
data AST = Lam | V String | Node [AST]
Node [Lam, V “x”, V “x”]
то тогда для того, чтобы понять, что первый “x” это binding occurrence, а второй на него ссылается, то нужно будет инспектить ключевое слово в начале
А в нормальном синтаксическом дереве это было бы
data Expr = Lam Pat Expr | …
И с таким деревом лисповые скобки это просто просранная нотация
Так в чем там ее смысл тогда?

Андрей
19.10.2018
10:24:49

Andrei
19.10.2018
10:25:35

Index
19.10.2018
10:27:31
Так он и есть уродский, о чем речь-то?
Столько фич в ASCII впихать — никто нормально не сделает.
a + b = …
это мы оператор объявили
a ! b = …
а это на самом деле “a" функция, а "b" это строгий аргумент, т.е. a (!b) = …
Если BangPatterns включить.
При том, что ! это все-таки оператор. Но вот его определить можно только как (!) a b = ...
Или выключив BangPatterns в модуле определения.

Google

Abbath
19.10.2018
10:33:23

Index
19.10.2018
10:33:50
Agda

A64m
19.10.2018
10:49:46
это все только для разработчика парсера тяжело, а человек-то нормально читает
уродство в хаскеле это (из ходового)
1) ду-нотация
2) семейства

Index
19.10.2018
10:54:13
Человек напишет
a + b = …
a ! b = ...
Только первое сработает, а второе нет.
Это не инженерная проблема, а проблема спецификации.
Если б еще сделать это whitespace sensitive, то можно было бы жить, типа bang pattern должен вполтную прилегать, иначе это оператор.

Andrei
19.10.2018
10:55:01

Alexander
19.10.2018
10:55:26
почему-то искатели токсичности считают, что хаскелисты считают всех кроме себя дурками

A64m
19.10.2018
10:55:56
проблема реальная, но не особо важная, ну сколько люди оператор ! объявляют?
c теми же отрицательными литералами проблема куда хуже

Alexander
19.10.2018
10:56:01
но "кроме себя" это ж лишнее

A64m
19.10.2018
10:56:22
но, конечно, надо было с самого начала делать чтоб банги писались без пробела с паттерном

Andrei
19.10.2018
10:56:42

Index
19.10.2018
10:56:44
Ну если кто-то пропозал сделает такой, то можно и реализовать.
Думаю, даже не слишком трудно.

A64m
19.10.2018
10:57:04
такой пропозал не пройдет

Index
19.10.2018
10:57:20
Для type applications же сделали whitespace-sensitive.
Тут чем-то отличается?
Просто не детектить ! как bang, если после него пробел

Google

A64m
19.10.2018
10:57:52
да, но банги-то 20 лет уже есть

Index
19.10.2018
10:58:08

Terminator
19.10.2018
10:58:10
@iodamagistr будет жить. Поприветствуем!

Index
19.10.2018
10:58:18
Но не постеснялись и сломали их в пользу type applications

A64m
19.10.2018
10:58:59

Index
19.10.2018
11:00:03
Можно и новое ввести, -XStickyBangPatterns
А потом сделать восьмилетний deprecation schedule для старых
Как с * сделали

A64m
19.10.2018
11:01:04
Это еще может и пройдет, но тут уже главный минус что расширение состоит примерно из ничего
Ну, восмилетный депрекейшн шедьюл это все равно что никакого

Terminator
19.10.2018
11:01:45
@strikepark будет жить. Поприветствуем!

Index
19.10.2018
11:02:23
Какие-нибудь -XNumericUnderscores ничем не лучше.

A64m
19.10.2018
11:03:13
Оно состоит из исправления синтаксиса
ну вот посмотрите как докопались до минимального пропозала "лейблы с большой буквы", там в обсуждении уже думают что бы еще добавть, а то маловато что-то

Alexander
19.10.2018
11:03:53
надо делать такие вещи частью OverqualifiedConstraints патчей

Index
19.10.2018
11:03:59
Короче, кто б запропоузил, я может и заимплеменчу.
Sticky bang patterns

A64m
19.10.2018
11:04:13

Index
19.10.2018
11:04:38
трупом-хаскелистом
инвалидом-хаскелистом
бомжом-хаскелистом

Google

A64m
19.10.2018
11:05:14
я тоже не надеюсь, что за восемь лет что-то толковое новое сделают Ж(((

Aleksey
19.10.2018
11:05:28

Index
19.10.2018
11:05:50
Ты про то, что можно писать f @ ty?

Terminator
19.10.2018
11:06:08
@true_grue будет жить. Поприветствуем!

Index
19.10.2018
11:06:23
TypeApplication сделали наоборот “отклеенным”, то есть это перед ним должен быть пробел, иначе получится as-pattern

Alexander
19.10.2018
11:06:41
a@b - at pattern

Aleksey
19.10.2018
11:06:56
as-pattern предполагает имя
А тут f @ x выглядит, как оператор

Alexander
19.10.2018
11:07:20
a@[foo] ?

Index
19.10.2018
11:07:24
или скобку, (x)@b тоже как as-pattern распарсится

Alexander
19.10.2018
11:07:24
это что?

Aleksey
19.10.2018
11:07:37
Я за f @T, вощм
И за обязательные пробелы вокруг операторов

A64m
19.10.2018
11:08:40
сам я обычно за закорючку, а не за ключевое слово, но вот тут не уверен, что @ лучше as

Index
19.10.2018
11:08:43
Вот пойди да напиши пропозал, если ты так видишь.
Это к Aleksey (astynax) про обязательные пробелы вокруг операторов

Aleksey
19.10.2018
11:09:44

A64m
19.10.2018
11:09:53
кто бы написал пропозал idiom brackets

Google

Index
19.10.2018
11:10:26
Иди напиши, я сделаю. Синтаксис (| f a b |), отберем у поганых стрелок

A64m
19.10.2018
11:10:57
((x:_) as all)?
да, но можно и наоборот (это мне всегда в такой конструкции нравилось, что с обеих сторон именовать паттерн можно)

Aleksey
19.10.2018
11:11:37
Кажется, что возможны разночтения...
Но сходу не придумаю

Index
19.10.2018
11:12:06
Оставьте мне as неключевым словом, я пишу f (a:as) (b:bs) = ...

Aleksey
19.10.2018
11:12:32
as был бы полущ, чем слишком "плотный" @

Index
19.10.2018
11:13:07
Ты решил разуплотнить синтаксис

Aleksey
19.10.2018
11:13:59
(tree as (Tree @ _ @ Int _ (l as (0:_)) _))
vs
tree@(Tree @ _ @ Int _ l@(0:_) _)
:)

A64m
19.10.2018
11:14:16
надо реанимировать идею haskell 2

Index
19.10.2018
11:15:50
Зачем?

Aleksey
19.10.2018
11:15:58

A64m
19.10.2018
11:16:35
Зачем?
1) много обсуждений синтаксиса без особой заботы об обратной совместимости
2) успех сам себя не избежит

Index
19.10.2018
11:16:55

Aleksey
19.10.2018
11:17:17
Нет. Нужно чтобы пробелы были, но кол-во пробелов не было значимо

Index
19.10.2018
11:17:31
> много обсуждений синтаксиса без особой заботы об обратной совместимости
Если дело только в синтаксисе, то можно просто сделать расширение -XHaskell2 и другим парсером проходиться