@Fsharp_chat

Страница 513 из 772
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
Главное что бы это не боты были ?
ощущение что это боты, не отвечают обычно именно они) Но посмотрим, чего уж)

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
Ну я колбасил для хттп запросов на билдерах

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

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, логирование и тд)

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
там удобные билдеры из коробки идут
Но как же кастомные операции для computational expressions в F#?

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
можно потом вот такое писать verticalLayout { padding = dip(30) editText { hint = "Name" textSize = 24f } editText { hint = "Password" textSize = 24f } button("Login") { textSize = 26f } }
Вот именно что это просто билдер (вызовающий методов с сайд эффектами), а не хороший immutable-dsl

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
dsl это не монады
Нет монады!

Google
Evgeniy
14.03.2018
14:05:25
Roman
14.03.2018
14:05:28
dsl это не монады
dsl не монады, но они могут быть полезны для реализации dsl

Pavel
14.03.2018
14:05:40
Вот именно что это просто билдер (вызовающий методов с сайд эффектами), а не хороший immutable-dsl
в беззаботные годы писал на вот этом https://github.com/sprache/Sprache и было немного больно

Roman
14.03.2018
14:05:55
dsl не монады, но они могут быть полезны для реализации dsl
что не означает, что их нужно обязательно туда впихывать)

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

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

Evgeniy
14.03.2018
14:08:53
а где вопрос был? я просто не заметил
Их парочка была уже. Один про вебчик на F#. Второй про computational expressions для eDSL.

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

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

А выше я видел разговор про фримонады. Это уже про разделение языка и интерпретатора.

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

Pavel
14.03.2018
14:12:31
И не только для монад, но и для аппликативов, формлетов, роутинга и бог еще знает для чего еще. :)
и как только они залазят в Computation expressions так сразу монадами становятся

Evgeniy
14.03.2018
14:13:02
и как только они залазят в Computation expressions так сразу монадами становятся
Как аппликативы, например, там становятся монадами? ;)

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
Я думаю, мы только про quotations забыли.
но это значит заставлять аналитиков писать на F#

в целом это не плохо, но зачем им знать весь 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 Спасибо за ответ!

Я постараюсь частями прокомментировать.

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
"почему все так сложно. вернее даже не так, а скорее - от чего так все переусложнено." всё зло в хаскеле

Страница 513 из 772