
Evgeniy
14.03.2018
08:00:08
Крутотень.
Привет.

Alex
14.03.2018
08:51:42
Крутотень.
т.е. теперь можно так?
let anotherPerson1 = { person with A.S.N = person.A.S.N + ", k.2" }
наконец то :)

Evgeniy
14.03.2018
08:56:43
Ещё нельзя, но я надеюсь, что допилят и примут.

Google

Igor
14.03.2018
09:22:19
Теперь линзы не нужны что ли?

Evgeniy
14.03.2018
09:24:28

Igor
14.03.2018
09:25:01
Ну да, но большое кол-во практических кейсов должно покрыть

Evgeniy
14.03.2018
09:25:13
Да.
Привет.

Fill
14.03.2018
10:07:00
Все кстати заметили? Стабильное приращение людей в чатике)

Igor
14.03.2018
10:08:34
Главное что бы это не боты были ?

Evgeniy
14.03.2018
10:33:28
Просто медленно. ;)

Roman
14.03.2018
11:01:02

Pavel
14.03.2018
11:03:05

Roman
14.03.2018
11:04:14

Artemy
14.03.2018
11:04:51
Лол

Google

Evgeniy
14.03.2018
11:06:44
Я интроверт. Ну, помимо того, что бот.

Roman
14.03.2018
11:07:20

Fill
14.03.2018
11:46:41
У меня ни одного сообщения в чате хаскеля, но я постоянно его читаю
Нормальный кейс

Roman
14.03.2018
13:03:23
Внезапно
Интересная вакансия "Junior Frontend разработчик" — https://career.ru/vacancy/24903669

Evgeniy
14.03.2018
13:04:03
> у нас уже используются Redis, Sphinx Search, TypeScript, F#
?

Vasily
14.03.2018
13:04:17
Зоопарк

Pavel
14.03.2018
13:18:34
У меня тоже оповещалка по F# на hh.ru стоит.

Kirill
14.03.2018
13:40:45
ребята, кто-нибудь колбасил DSL на F#?
интересует именно в разрезе: создать язык, чтобы аналитик мог описывать бизнес правила
но вообще буду рад любому опыту
расскажите про подводные грабли, посоветуйте с чего начать, чтобы погрузиться

Vasily
14.03.2018
13:41:34
Ну я колбасил для хттп запросов на билдерах

Pavel
14.03.2018
13:42:09

Vasily
14.03.2018
13:42:28
Фри монадки скорее про аст

Vladimir
14.03.2018
13:42:31

Vasily
14.03.2018
13:42:49
Поверх них ещё что-то нужно
У Симана была серия статей в блоге
Как раз про билдеры,фри монадки и прочее
Ещё вариант fparsec

Kirill
14.03.2018
13:45:26
спасибо, почитаю

Google

Pavel
14.03.2018
13:45:47
Fparsec - это для того, чтобы твой язык парсить

Kirill
14.03.2018
13:48:48
у меня в общем-то идея такая:
сделать DSL, чтобы аналитики на нём могли ахалай махалаи свои писать в DDDшном стиле в доменной модели, т.е. как бы всю доменню модель на откуп аналитикам отдать, пусть там шонглируют своими абстракциями
разработчик бы занимался тем, что поддерживал бы этот DSL с технической части и тем, что связывал бы код предметной области с инфраструктурной частью (IO, логирование и тд)

Pavel
14.03.2018
13:49:01

Kirill
14.03.2018
13:49:43
а что там такого?
вообще мы на C# колбасим и было бы прикольно предметную область в F# выделить
на другой язык целиком перекатываться ваще не айс, да и эта ваша JVM говно собачес

Anna
14.03.2018
13:50:48
а что там такого?
там DSL прикольно можно лямбдами описывать обыкновенными, как я поняла

Pavel
14.03.2018
13:51:19

Kirill
14.03.2018
13:51:40
окей, гляну, спасибо

Pavel
14.03.2018
13:52:45
окей, гляну, спасибо
можно потом вот такое писать
verticalLayout {
padding = dip(30)
editText {
hint = "Name"
textSize = 24f
}
editText {
hint = "Password"
textSize = 24f
}
button("Login") {
textSize = 26f
}
}

Evgeniy
14.03.2018
13:52:57

Anna
14.03.2018
13:54:59

Evgeniy
14.03.2018
13:57:18
@SunsetForYou
https://github.com/dungpa/dsls-in-action-fsharp/blob/master/DSLCheatsheet.md

Kirill
14.03.2018
13:57:41
огонь!
спасибо

Igor
14.03.2018
14:01:49

Pavel
14.03.2018
14:04:35
что вы все со своими монадами
dsl это не монады
https://books.google.ru/books?id=_6GfDQAAQBAJ&pg=PA102&lpg=PA102#v=onepage&q&f=false

Pavel
14.03.2018
14:05:12

Google

Evgeniy
14.03.2018
14:05:25

Roman
14.03.2018
14:05:28

Pavel
14.03.2018
14:05:40

Roman
14.03.2018
14:05:55

Evgeniy
14.03.2018
14:07:36
Интересно, что @forcewake который раз вбрасывает, но не реагирует на мои вопросы. :(

Pavel
14.03.2018
14:08:03
аа
вижу

Evgeniy
14.03.2018
14:08:53

Pavel
14.03.2018
14:10:19
Где монады?!
да хоть теже "Computation expressions" да и просто через сообшение предложение монады в dsl впендюрить

Evgeniy
14.03.2018
14:10:51
И не только для монад, но и для аппликативов, формлетов, роутинга и бог еще знает для чего еще. :)
А выше я видел разговор про фримонады. Это уже про разделение языка и интерпретатора.

Roman
14.03.2018
14:12:20

Evgeniy
14.03.2018
14:12:28
Все в контексте.

Pavel
14.03.2018
14:12:31

Evgeniy
14.03.2018
14:13:02

Roman
14.03.2018
14:13:02

Evgeniy
14.03.2018
14:13:18
Я думаю, мы только про quotations забыли.
Не видел их в DSL Cheatsheet.

Roman
14.03.2018
14:15:16

Google

Evgeniy
14.03.2018
14:15:33
Ок, пропустил.

Roman
14.03.2018
14:15:37
в целом это не плохо, но зачем им знать весь F#?
Мне кажется получить AST уже достаточно

Pavel
14.03.2018
14:23:26
почему?
The designers of F# use the term "computation expression" and "workflow" because it's less obscure and daunting than the word "monad", and because monad and computation expression, while similar, are not precisely the same thing. The author of this book prefers "monad" to emphasize the parallel between the F# and Haskell https://en.wikibooks.org/wiki/F_Sharp_Programming/Computation_Expressions
ну и собственно "Суть монад — в композиции вычислений". чем Computation Expressions и являются

Evgeniy
14.03.2018
14:30:29
@deexpp Ты лучше скажи, что пытаешься доказать. Что нельзя использовать computational expressions c кастомными операциями для eDSL?

B_CCCPcekca_HET
14.03.2018
14:38:28


Pavel
14.03.2018
14:40:24
Их парочка была уже. Один про вебчик на F#. Второй про computational expressions для eDSL.
я даже ответ начал писать
но переключился
можно сей опус не читать
будет долго, извините.
никого не хочу обижать
ни к чему не принуждаю
все описаное вероятнее всего относится только к моему частному случаю
Общий посыл
у меня есть один единственный вопрос к людям которые практикуют ФП - почему все так сложно. вернее даже не так, а скорее - от чего так все переусложнено.
Этот вопрос возник еще давно, в момент знакомства с clojure - я реально не представляю как с таким синтаксисом и таким тулингом можно что-то делать и потом продавать это бизнесу как решение, которое можно использовать, поддерживать и использовать. Точно такой же вопрос иногда возникает в F#.
Да, возможности огромны, но то как это делается в ФП это ж дичь. Мне порой кажется, что уровень сложности (в синтаксисе и в целом в инфраструктуре) реально повышается, чтобы "тупые" не могли эту планку перепрыгнуть.
вот и получается что кто-то пытается популяризировать то, что в большинстве случаев не может быть понято большинством (ну типа меня, среднего такого электронного грузчика, звезд с неба не хватающего).
Теперь назад к теме.
computational expressions
мощная фича, я бы даже хотел сказать что киллер фича, но нет
Для того чтобы ее использовать нужно хорошо знать F#, .net и ФП в целом. Я не могу взять и за один вечер сваять что-то работающее и на завтра после дэйли стэндапа продать это своей команде.
Потому что вне зависимости от мощности и крутости фичи, уровень входа ну очень высок.
Взять тот же пример с DSL - человек спросил как можно это сделать в F# - и все начало скатываться к
member this.Bind(m, f) =
m |> List.collect f
И собственно это только вишенка на торте, но уже она вынуждает/побуждает меня разбираться в partial application | currying | bind, знать pipelines, сразу пошла борьба за чистоту функций, сайд эффекты, Thinking functionally и все как-то подзабыли, что есть немаленьная вероятность, что у человека есть задача и он в поиске способов её решения, а времени на разбор может и не быть.
В данном случае инструмент F# и все его фичи конечно круче нефункционального DSL в котлине, но в нем я могу сделать то что мне нужно (проверить идею / продать заказчику / решить проблему) гораздо быстрее - возможно потому что информации больше, возможно из-за того что сделано все чуть проще - я все еще не могу ответить на этот вопрос.
И так во многом.
Вот пример - мне нужно написать одну штуку, как мне кажется интересную и, вероятно, я бы хотел использовать для этого какой-то новый инструмент.
Я примерно понимаю как это можно сделать с использованием C# и думается мне что на F# это выглядело бы даже круче, но:
- все начинает скатываться к вот такому коду https://github.com/fsharp/FSharp.Compiler.Service/blob/master/src/fsharp/ast.fs#L1697-L1723 - это ж неподдерживаемая боль как по мне
- отсутсвтию достаточного количества инфы, чтобы я смог это переварить
Впрочем и так много написал, да и оффтоп это.
Про F# в вебе я в чуть позже отвечу.


Evgeniy
14.03.2018
14:42:33
@forcewake Спасибо за ответ!
Я постараюсь частями прокомментировать.

Pavel
14.03.2018
14:44:20

Roman
14.03.2018
14:45:41

B_CCCPcekca_HET
14.03.2018
14:46:19

Evgeniy
14.03.2018
14:47:16
Про computational expressions, eDSL и Rotlin.
Вот простой пример eDSL для описания Nuget пакетов. Здесь нет ни монад, ни |> , ни bind. Ничего кроме стандартного F# синтаксиса для ООП (type - class, member - method) и обновления записей (то самое страшное ФП).
http://www.readcopyupdate.com/blog/2014/10/10/edsls-using-custom-operations.html
сс @forcewake


Roman
14.03.2018
14:48:15
я даже ответ начал писать
но переключился
можно сей опус не читать
будет долго, извините.
никого не хочу обижать
ни к чему не принуждаю
все описаное вероятнее всего относится только к моему частному случаю
Общий посыл
у меня есть один единственный вопрос к людям которые практикуют ФП - почему все так сложно. вернее даже не так, а скорее - от чего так все переусложнено.
Этот вопрос возник еще давно, в момент знакомства с clojure - я реально не представляю как с таким синтаксисом и таким тулингом можно что-то делать и потом продавать это бизнесу как решение, которое можно использовать, поддерживать и использовать. Точно такой же вопрос иногда возникает в F#.
Да, возможности огромны, но то как это делается в ФП это ж дичь. Мне порой кажется, что уровень сложности (в синтаксисе и в целом в инфраструктуре) реально повышается, чтобы "тупые" не могли эту планку перепрыгнуть.
вот и получается что кто-то пытается популяризировать то, что в большинстве случаев не может быть понято большинством (ну типа меня, среднего такого электронного грузчика, звезд с неба не хватающего).
Теперь назад к теме.
computational expressions
мощная фича, я бы даже хотел сказать что киллер фича, но нет
Для того чтобы ее использовать нужно хорошо знать F#, .net и ФП в целом. Я не могу взять и за один вечер сваять что-то работающее и на завтра после дэйли стэндапа продать это своей команде.
Потому что вне зависимости от мощности и крутости фичи, уровень входа ну очень высок.
Взять тот же пример с DSL - человек спросил как можно это сделать в F# - и все начало скатываться к
member this.Bind(m, f) =
m |> List.collect f
И собственно это только вишенка на торте, но уже она вынуждает/побуждает меня разбираться в partial application | currying | bind, знать pipelines, сразу пошла борьба за чистоту функций, сайд эффекты, Thinking functionally и все как-то подзабыли, что есть немаленьная вероятность, что у человека есть задача и он в поиске способов её решения, а времени на разбор может и не быть.
В данном случае инструмент F# и все его фичи конечно круче нефункционального DSL в котлине, но в нем я могу сделать то что мне нужно (проверить идею / продать заказчику / решить проблему) гораздо быстрее - возможно потому что информации больше, возможно из-за того что сделано все чуть проще - я все еще не могу ответить на этот вопрос.
И так во многом.
Вот пример - мне нужно написать одну штуку, как мне кажется интересную и, вероятно, я бы хотел использовать для этого какой-то новый инструмент.
Я примерно понимаю как это можно сделать с использованием C# и думается мне что на F# это выглядело бы даже круче, но:
- все начинает скатываться к вот такому коду https://github.com/fsharp/FSharp.Compiler.Service/blob/master/src/fsharp/ast.fs#L1697-L1723 - это ж неподдерживаемая боль как по мне
- отсутсвтию достаточного количества инфы, чтобы я смог это переварить
Впрочем и так много написал, да и оффтоп это.
Про F# в вебе я в чуть позже отвечу.
saved


Pavel
14.03.2018
14:49:15
"почему все так сложно. вернее даже не так, а скорее - от чего так все переусложнено." всё зло в хаскеле