
Слава
07.06.2018
13:28:45

Александр
07.06.2018
13:29:05
А кто в курсе, что там с онлайн-иде от FPComplete произошло?

Yuriy
07.06.2018
13:29:09
;; явно верблюды принесли

dimiii
07.06.2018
13:29:29
Вот бы кто -то запилил язык, в котором определение типов и работа с ними отделена от ядра языка. Чтобы типы определялись в сопутствующих библиотеках квантфицированно-аксиоматически и комбинировались/проверялись при компиляции. Естественно, чтобы была стандартная библиотека типов, с которой можно было начинать. Было такое? Такое вообще возможно?

Google

A64m
07.06.2018
13:29:33

Александр
07.06.2018
13:29:47

Слава
07.06.2018
13:30:01

Yuriy
07.06.2018
13:30:01

Евгений
07.06.2018
13:30:10
dependent types?

dimiii
07.06.2018
13:30:15
Все косвенности, вроде newtype хаскелля или указателей С можно было бы описать в библиотеках типов

A64m
07.06.2018
13:30:16

Евгений
07.06.2018
13:30:28
Назовём его hegel

dimiii
07.06.2018
13:30:45

Yuriy
07.06.2018
13:31:55
dependent types?
как я понимаю, завтипы, наоборот, основаны на идее смычки значений и типов

A64m
07.06.2018
13:31:59
ньютайпы-то да, можно описать в "библиотеке", в ядре их нету.

Pig
07.06.2018
13:32:29

Google

dimiii
07.06.2018
13:32:32

Yuriy
07.06.2018
13:33:04

A64m
07.06.2018
13:33:26

dimiii
07.06.2018
13:33:55

Alexander
07.06.2018
13:33:57
линейные в итоге не пойдут в следующий релиз?

A64m
07.06.2018
13:34:12
думаю, что не пойдут

Yuriy
07.06.2018
13:34:17

A64m
07.06.2018
13:34:41
его не заморозили еще, но вероятность того что пойдут КРАЙНЕ мала

Александр
07.06.2018
13:35:31
Если взяться сегодня и начать писать свой Haskell Next Gen, то через года три-четыре, когда популярность оригинального Haskell вырастет в разы, а сам он превратится во второй C++, можно будет поймать волну разочаровавшихся хаскеллистов.

A64m
07.06.2018
13:35:32

dimiii
07.06.2018
13:38:08

A64m
07.06.2018
13:38:27
с такми же успехом как с плюсов разочарованных плюсистов уже лет 20 пытаются поймать?

Alexander
07.06.2018
13:38:54
я бы заценил языке где типы это объекты первого класса

Александр
07.06.2018
13:39:50

Leonid
07.06.2018
13:41:00
модули в плюсы никогда не завезут

Stepan
07.06.2018
13:41:22

? animufag ?
07.06.2018
13:41:30

Александр
07.06.2018
13:41:30
Хотя я уже разочаровался, глядя на их тяжело больной Maybe, а вот Александреску еще топит за еще более тяжело больной Either. Будь моя воля, я бы всех плюсовых комитетчиков отправил изучать Хаскель, с обязательной сдачей экзаменов по монадам

Pig
07.06.2018
13:42:17
Кстати, а есть языки где можно делать матчинг по типу?

Stepan
07.06.2018
13:42:31

Google

Александр
07.06.2018
13:42:33

A64m
07.06.2018
13:42:41

Pig
07.06.2018
13:43:03
Например
foo acc (x -> y) = foo (x : acc) y
foo acc _ = rev acc

Alexander
07.06.2018
13:43:49
а что делает первая ветка?

? animufag ?
07.06.2018
13:44:16
да точно плюсы

Pig
07.06.2018
13:44:38
Матчится по конструктору типов ->

Alexander
07.06.2018
13:44:46
не когда а что

Алексей
07.06.2018
13:44:53
Мне что-то кажется, что на lisp может запилить свои типы и прочее

A64m
07.06.2018
13:45:13
и вся функция над типами?

Pig
07.06.2018
13:45:33
+
List Type -> Type -> List Type

Alexander
07.06.2018
13:45:56
а, ну это и есть первоклассные типы
когда конструктор типа - частный случай конструктора значения

A64m
07.06.2018
13:46:33
в нормальной омеге должно быть можно, в хаскеле проблемы с кривыми семействами

Pig
07.06.2018
13:47:00
В Идрисе так тоже нельзя, значит ли это, что там нету омеги? А может я просто не умею.

A64m
07.06.2018
13:47:31
можно нормально только для конкретных типов писать вроде
Int -> Bool -> Int
без параметров
не знаю, насчет идриса
должно быть можно

Евгений
07.06.2018
13:48:27

Google

A64m
07.06.2018
13:48:48
не все так просто

Kirill
07.06.2018
13:49:10

A64m
07.06.2018
13:50:15
вроде там минимум переиспользован
фпкомплит открывала исходники большей части этой иде, но никто ее до юзабельного состояния так и не довел

Timofey
07.06.2018
13:51:34

A64m
07.06.2018
13:52:50
вроде вот она https://github.com/fpco/ide-backend
intero происходит от экспериментального форка ghci, ghci-ng или как он там назывался

Слава
07.06.2018
13:54:46

Александр
07.06.2018
13:55:37
а для неофитов - чем они больны?
Там внутри куча ненужного хлама, который убирается инстансами монады и нижележащих классов, через которые выражается все, что нужно. Но монад в плюсах нет, концепты не принимают в стандарт, и разные люди в разных пропозалах продолжают тащить в язык всякие друг с другом слабо совместимые вещи. Сколько от ФП взяли, оно все кривое, неконсистентное. Генеричные лямбды почти неюзабельны, так как вывод типов постоянно ломается. Поэтому они ненастоящие, а темплитных лямбд не сделать.

Слава
07.06.2018
13:56:33

A64m
07.06.2018
13:57:04
так там же есть линковский синтаксис чтоб такую лесенку убрать

Timofey
07.06.2018
13:57:16

Слава
07.06.2018
13:57:38

Александр
07.06.2018
13:57:39
Что-то жесть. В C# есть Linq с монадическим flatMap, можно было попробовать враппер какой-нибудь написать

Слава
07.06.2018
14:04:03

Александр
07.06.2018
14:04:40

Дмитрий
07.06.2018
14:04:51
Хорошо типизированное торнадо

Слава
07.06.2018
14:05:42
А где ты теперь работаешь?
Сейчас нигде - ну, почти. Есть некий интеграционный проект на амазоне, который надо писать, попутно делая вид, что знаешь амазоновские сервисы. Я и пишу.

Александр
07.06.2018
14:07:06
Ну, на самом деле, на плюсах монадический код писать так же приходится. Через цепочку байндов. Что поделать, do-нотация - это удел избранных языков. В C++ 30 какой-нибудь завезут, ага

Denis
07.06.2018
14:25:59

Google

dimiii
07.06.2018
14:28:47
PureScript by Example by Phil Freeman - таким образом уже неактуальна?

Дмитрий
07.06.2018
14:29:15
Ну главы про эффекты можно пропускать
А так чего

Denis
07.06.2018
14:29:37

dimiii
07.06.2018
14:29:42
Ее мое, меня этим пурса и заинтересовала

Дмитрий
07.06.2018
14:30:01
Ну кто ж знал

Denis
07.06.2018
14:30:16

Дмитрий
07.06.2018
14:31:11

Denis
07.06.2018
14:31:54

Roman
07.06.2018
14:31:54
запакованная в алгебраическую правду

Yuriy
07.06.2018
14:38:56

dimiii
07.06.2018
14:40:08

Leonid
07.06.2018
15:23:02
напомните как в линзах сделать \a b -> a^.foo == b^.foo?

Denis
07.06.2018
15:23:36
(==) `on` (^.foo)
:D

Leonid
07.06.2018
15:23:55
там вроде был комбинатор

Yuriy
07.06.2018
15:26:28
что-нибудь с both, curry и uncurry
both . foo

kana
07.06.2018
15:33:11