
Vasily
26.07.2018
14:41:32
Главное, не забывай return! loop писать

Roman
26.07.2018
14:41:45
ну причесывать я буду, когда получше разберусь и хоть как-то сделаю рабочий вариант. Концепция для меня новая пока что)

Vasily
26.07.2018
14:42:00
А то одно сообщение обработаешь и привет

Roman
26.07.2018
14:42:09

Google

Evgeniy
26.07.2018
15:25:29
Привет.

アレクセイ
26.07.2018
17:25:27

Anna
26.07.2018
17:27:19

アレクセイ
26.07.2018
17:27:40
Дайте ссылочку где он благословляет

Ayrat
26.07.2018
17:32:11

アレクセイ
26.07.2018
17:34:01
А, не втянулся ещё

Evgeniy
26.07.2018
18:11:35
Он еще ОО там благославляет.

Vagif
26.07.2018
18:35:22

Ayrat
26.07.2018
18:37:54
Он еще ОО там благославляет.
я кстати не шутил про благославляет. Папа F# сделал F# ООП языком и поощряет использовать гибридный подход и не гнушаться мутабельных состояний.

アレクセイ
26.07.2018
18:43:15
Не ну иногда можно во имя скорости. Стэк там какой нить в аггрегейт засунуть. Энтерпрайз же.

Ayrat
26.07.2018
18:46:15

アレクセイ
26.07.2018
18:48:54
Насчёт «смело» я бы не согласился ) не только многопоточность может подпортить день с мутабельными состояниями

Google

Igor
26.07.2018
18:50:04

Ayrat
26.07.2018
18:50:49
короче, хорошо что F# может и так, и так

Pavel
26.07.2018
18:56:53

Evgeniy
26.07.2018
19:25:41
https://blogs.msdn.microsoft.com/dotnet/2018/07/26/announcing-f-4-5-preview/
Го тестировать?

Ayrat
26.07.2018
19:29:36

Vlad
26.07.2018
19:29:51

Evgeniy
26.07.2018
19:34:58
Я жду 4.5, потому что после этого начнут работать над F#5.
А он должен быть неплох. :)

Roman
26.07.2018
19:50:53

Pavel
26.07.2018
20:05:01

Friedrich
27.07.2018
06:41:12
https://github.com/fsharp/fslang-design/blob/master/FSharp-4.5/FS-1054-undent-list-args.md булин вот это огонь

Vagif
27.07.2018
06:47:05
Надеюсь, этот RFC примут. Так и не овладел полностью искусством табуляции в F#.

Evgeniy
27.07.2018
06:47:31

Ayrat
27.07.2018
06:47:40

Vasily
27.07.2018
06:49:06
Легче, конечно, жить не станет

Evgeniy
27.07.2018
06:50:05

Friedrich
27.07.2018
06:51:47

Vagif
27.07.2018
07:54:59
Я искренне завидую людям, которые с первого раза правильно табулируют любой код на F#, но не удивлюсь, если завидовать некому.

A64m
27.07.2018
07:58:46
даже я пострадал от ошибок с отступами в эфшарпе, хотя до этого годы писал на хаскеле (с отступами, естественно) и это не помогло

Google

Vagif
27.07.2018
08:07:15
Вчера решил, что понял, но так до конца и не понял разницу между Fable.Websockets.Elmish и новой библиотекой Elmish.Bridge. В примерах для SAFE stack используется первая, в частности, в примере SAFE-Chat, который написал @olegzee. Теперь есть еще Elmish.Bridge, тоже на основе WebSockets. Мне объяснили, что "Fable.Remoting and Elmish.Bridge allow you to model declarative APIs without handling websocket specifics like the handshake clutter your API design." Сравнил примеры решений, Elmish.Bridge, судя по всему, прячет собственно socket протокол, там не нужно пользоваться Cmd.ofSocketMessage. Но, имхо, не так уж это портит код. Кто-нибудь пользовался обеими библиотеками, есть какие-нибудь предпочтения?


Oleg
27.07.2018
08:09:46
Вчера решил, что понял, но так до конца и не понял разницу между Fable.Websockets.Elmish и новой библиотекой Elmish.Bridge. В примерах для SAFE stack используется первая, в частности, в примере SAFE-Chat, который написал @olegzee. Теперь есть еще Elmish.Bridge, тоже на основе WebSockets. Мне объяснили, что "Fable.Remoting and Elmish.Bridge allow you to model declarative APIs without handling websocket specifics like the handshake clutter your API design." Сравнил примеры решений, Elmish.Bridge, судя по всему, прячет собственно socket протокол, там не нужно пользоваться Cmd.ofSocketMessage. Но, имхо, не так уж это портит код. Кто-нибудь пользовался обеими библиотеками, есть какие-нибудь предпочтения?
Совершенно согласен. В Websockets.Elmish это все уже реализовано как нельзя лучше

Vagif
27.07.2018
08:26:04
Да, и огромное тебе спасибо за SAFE-Chat. Пользовался кодом как учебником для своего первого Fable приложения.

Roman
27.07.2018
08:26:34
Вчера решил, что понял, но так до конца и не понял разницу между Fable.Websockets.Elmish и новой библиотекой Elmish.Bridge. В примерах для SAFE stack используется первая, в частности, в примере SAFE-Chat, который написал @olegzee. Теперь есть еще Elmish.Bridge, тоже на основе WebSockets. Мне объяснили, что "Fable.Remoting and Elmish.Bridge allow you to model declarative APIs without handling websocket specifics like the handshake clutter your API design." Сравнил примеры решений, Elmish.Bridge, судя по всему, прячет собственно socket протокол, там не нужно пользоваться Cmd.ofSocketMessage. Но, имхо, не так уж это портит код. Кто-нибудь пользовался обеими библиотеками, есть какие-нибудь предпочтения?
Пока нет, но оч хочется

Friedrich
27.07.2018
08:31:38
Пишешь какое-нибудь
let x = \a b ->
a + b
А ему не нравится!

A64m
27.07.2018
08:32:50
да я и там и там привык, просто мне показалось примечательным что разницы достаточно чтоб в другом языке опять привыкать пришлось

Friedrich
27.07.2018
08:33:07
И приходится всегда табулировать это куда-нибудь подальше на рандомное количество символов.

Vagif
27.07.2018
08:40:54
А какой вариант вы предпочитаете?
let getUser firstName lastName =
{
FirstName = firstName
LastName = lastName
}
let getUser firstName lastName =
{ FirstName = firstName
LastName = lastName }

Ayrat
27.07.2018
08:41:07

Vagif
27.07.2018
08:42:31
Согласно guidelines, нужно выбирать второй, но при этом все поля records смещаются на 2 позиции относительно позиций табуляции
Меня это напрягает

Friedrich
27.07.2018
08:43:27

Vagif
27.07.2018
08:43:52
Если выбрать табуляцию со смещением на 2, то все ок, но обычно же больше двух.

Friedrich
27.07.2018
08:43:59
Ну, теперь можно будет писать
let foo = {
bar = a
baz = b
}
Правильно же?

Ayrat
27.07.2018
08:44:59

Vagif
27.07.2018
08:45:43
Получаются разные отступы для таких случаев:
let getUser firstName lastName =
{ FirstName = firstName
LastName = lastName }
let getOtherUser firstName lastName =
let user = {
FirstName = firstName
LastName = lastName }
user

Ayrat
27.07.2018
08:46:15
т.е. так же, как и объявление рекорда

Google

Daniel
27.07.2018
08:46:28

Roman
27.07.2018
08:46:43
спасибо тебе за это расширение

Ayrat
27.07.2018
08:46:50

Friedrich
27.07.2018
08:46:51

Daniel
27.07.2018
08:47:10
хотя, может, я забивал на ворнинг ?
просто рекомендуемый вариант имхо выглядит ужасно (

Alex
27.07.2018
08:49:24
Вопрос по dotnet 2.1.300

Vagif
27.07.2018
08:49:26

Alex
27.07.2018
08:49:32
error FS3033: Поставщик типов сообщил об ошибке "ProviderImplementation.JsonProvider" в контексте предоставленного типа "FSharp.Data.JsonProvider,Sample=" {\"name\":\"11\"} "", элемент "Parse". Ошибка: Не удалось задать привязку типа "System.IO.StringReader" в сборке "System.Private.CoreLib, Version=4.0.0.0

Vagif
27.07.2018
08:50:08
Но, похоже, придется перестраиваться.

Ayrat
27.07.2018
08:51:32
кстати, кто ещё VS Code пользуется, там в превью добавили новый стиль окна
"window.titleBarStyle": "custom",
рекомендую попробовать. По дефолту там native стоит и на винде native говно
VS Code надо будет рестартануть для эффекта

Pavel
27.07.2018
09:02:51

Oleg
27.07.2018
09:06:59

Alex
27.07.2018
09:22:03
Почему-то Ошибка: Не удалось задать привязку типа "System.IO.StringReader" в сборке "System.Private.CoreLib, Version=4.0.0.0 выдает, если dotnet run|build
msbuild нормально собирает
кто-нибудь знает почему?

Vagif
27.07.2018
09:23:09

Google

Klei
27.07.2018
09:29:34


Vagif
27.07.2018
09:32:35
Здесь периодически задают вопросы об использовании F# в продакшн, у нас адаптация заняла несколько лет, по-прежнему большинство дотнетчиков в организации работает на C#, но мы достигли некоего критического числа разработчиков (10+), предпочитающих писать на F#, теперь любой новый проект можно начинать на F#, это один из стандартных языков организации. Что очень помогло в адаптации - это понимание частью руководства того, что смена языка программирования зачастую менее радикальное решение, чем смена базы данных или протокола интеграции, поскольку язык программирования снаружи не виден, в отличии от многого другого. Но у нас вообще либеральная среда, каждая команда вправе выбирать собственные технические средства. Никто из начавших работать на F# не хочет возвращаться на C#.

Oleg
27.07.2018
09:34:35

Vagif
27.07.2018
09:44:03
Да, я смотрел пример из Elmish.Bridge (https://github.com/Nhowka/TestRemoting), он с одной стороны минималистичный, там весь клиент сидит в файле Client.fs, и view, и бизнес-логика. Но доменная модель построена вокруг DU с восемью значениями, и это убивает весь минимализм.
Но пример все равно полезный.

Oleg
27.07.2018
09:48:33
@VagifAbilov, нужно ли на Saturn переводить пример?

Roman
27.07.2018
09:54:44

Alex
27.07.2018
09:55:08
open FSharp.Data
open System
type Sample = JsonProvider<""" {"name":"11"} """>
[<EntryPoint>]
let main argv =
let sample = Sample.Parse(""" {"name":"11"} """)
printfn "hello %A" sample
exit 0

Vagif
27.07.2018
09:55:32
Я пока Сатурном не пользовался, но вообще неплохо было бы. В Elmish.Bridge прямо на заглавной странице показывается, как его встраивать в Suave, Giraffe, Saturn. Это добавляет доверия к проекту.

Alex
27.07.2018
09:55:53
простой код, проект создал dotnet new console, msbuild собирает, dotnet run нет

Roman
27.07.2018
09:56:39

Alex
27.07.2018
09:57:27
вот и я удивляюсь
Еще почему-то vs code не видит msbuild, хотя я винду вроде давно не настраивал, не должно было ничего поменяться

Oleg
27.07.2018
10:20:13