
Nikolay
16.04.2017
10:36:20
Это работает?
The type 'ChatUser' does not have 'null' as a proper value

Roman
16.04.2017
10:37:10
(box Val) = null

Nikolay
16.04.2017
10:38:58
let SomeNull x =
if isNull(box x) then
None
else
Some x

Google

Nikolay
16.04.2017
10:39:01
Как-то так получается

Klei
16.04.2017
10:39:51
Может проще разрешить null для рекорда?

Nikolay
16.04.2017
10:40:21
Спасибо, с боксингом сработало

Roman
16.04.2017
10:40:35

Nikolay
16.04.2017
10:40:44
Он для записей не работает
С доступом к БД в F# на .Net Core пока очень больно :(

Roman
16.04.2017
10:42:18
Я бы операции типа залезть в бд или опросить сервис. Оборачивал бы Result вместо Option.

Igor
16.04.2017
10:47:28

Roman
16.04.2017
11:59:06

Evgeniy
16.04.2017
12:56:11
https://www.reddit.com/r/fsharp/comments/652sin/what_are_the_worst_parts_of_f/
Зачем такие обсуждения существуют?
Ну, то есть, все кто пользуется и так знают проблемные места.

Google

Evgeniy
16.04.2017
12:57:31
И те, кто их может исправить, вряд ли найдут что-то новое в таких обсуждениях.

Igor
16.04.2017
16:23:34
А есть какая-нибудь защита от посылания null сюда?
let toUpper (x: string) = x.ToUpper()

Klei
16.04.2017
16:29:26
А что надо вернуть если null?

Igor
16.04.2017
16:29:48

Friedrich
16.04.2017
16:30:37
К сожалению, в системе типов F# null — это корректный элемент типа string. Никакой возможности отследить его на уровне типов нет.
Можно только защиту соорудить разной степени муторности.

Klei
16.04.2017
16:31:00
Можно обертку сделать.

Friedrich
16.04.2017
16:31:16
Ну, я бы начал с Option.ofObj x, а дальше всякое.

Klei
16.04.2017
16:31:52

Friedrich
16.04.2017
16:32:00
Уже исправился, ага :)
За выходные портировал свой бложик с Freya + OWIN + IIS на Freya + .NET Core + Kestrel. Впечатления положительные. Ionide + VS Code хорошо работает с F#-проектами на Core.
Только с RSS осталось разобраться, и буду запускать в продакщен.

Evgeniy
16.04.2017
16:41:59
Отличные новости!

Akhmed
16.04.2017
16:42:29
А сейчас есть на что посмотреть?

Igor
16.04.2017
16:42:33

Friedrich
16.04.2017
16:42:51
(нет, не соблюдаю и никогда не соблюдал; здесь вам не Хаскель)
Впрочем, оно как-то само собой выходит. Если в приложении ничего мутабельного нету — значит, оно всё чистое :)

Evgeniy
16.04.2017
16:44:17
@fvnever Предлагаю об успешном переходе на .Net Core написать в твиттер. :)

Friedrich
16.04.2017
16:44:34

Google

Evgeniy
16.04.2017
16:44:39
Спасибо.

Friedrich
16.04.2017
16:45:05
Мне там ещё деплой портировать :(

Igor
16.04.2017
16:45:21

Friedrich
16.04.2017
16:45:23
Впрочем, жахну докером везде.

Roman
16.04.2017
16:46:00
https://docevaad.github.io/Chain

Friedrich
16.04.2017
16:46:05
Мне кажется, что, если б в F# (или C#) были эффекты, то было бы очень удобно на разных слоях приложения локализовать разные эффекты.
Скажем, на уровне DAL — только [DB], а на уровне Web — только [HTTP].
И, что важно, на других уровнях этих эффектов не разрешать.

Evgeniy
16.04.2017
16:47:07
@angmarr Потому что F# -- это улучшенный C#. :)

Friedrich
16.04.2017
16:47:14
Очень симпатично и архитектурно бы выходило.
Я давно искал такую штуку.

Evgeniy
16.04.2017
16:50:01
@angmarr А от того видео я до сих пор оправиться не могу.
Так и представляю себе болл, который нужно зафорсить на топ хилла.

Friedrich
16.04.2017
16:51:17
Ладно, посмотрю то видео на ночь. Больно вы заинтриговали :)
Бже. Он и правда предлагает зафорсить болл на хилл %)

Igor
16.04.2017
17:09:56

Evgeniy
16.04.2017
17:12:53
@angmarr Про это ploeh пишет.
Я думаю, получше, чем в докладе рассказано.

Google

Igor
16.04.2017
17:14:45

Evgeniy
16.04.2017
17:16:18
Лучше прочитать хороший текст, чем слушать про болл на хилле. :)

Igor
16.04.2017
17:17:28

Friedrich
16.04.2017
17:17:53
Это позволяет никогда не видеть NRE в продакшене. Вот честно, не припомню такого случая, чтоб в ФП-коде где-то стрельнуло.

Evgeniy
16.04.2017
17:18:56
Ага, а примеры про Email и Shopping Cart этот чувак взял из доклада Scott Wlaschin - Domain modelling with the F# type system.

Friedrich
16.04.2017
17:18:56
(хотя гарантии от системы типов, конечно, намного лучше, чем моё честное слово)

Evgeniy
16.04.2017
17:19:33
@angmarr Мне просто не понравился доклад.

Igor
16.04.2017
17:21:09

Friedrich
16.04.2017
17:21:54
В стандартной библиотеке есть Option!
В JDK 8 :)

Igor
16.04.2017
17:22:00

Friedrich
16.04.2017
17:22:43
Или у Котлина своя стандартная либа для портабельности в JS и native?

Evgeniy
16.04.2017
17:22:50
https://skillsmatter.com/skillscasts/4971-domain-driven-design-with-scott-wlaschin

Igor
16.04.2017
17:22:59
В JDK 8 :)
Котлин работает на JVM 1.6 (а это 99% андроидов) и JS/Native

Klei
16.04.2017
17:23:27
В этом докладе показывались типы с ограничениями. Я понял так, что это какой-то нугет. Но моих способностей хватило лишь на это http://www.nuget.org/packages/FSharp.DependentTypes/0.0.1-beta . Что-то версия вообще не радует.
Или я не то нашел?

Evgeniy
16.04.2017
17:23:56
@Kleidemos То.

Igor
16.04.2017
17:24:03

Evgeniy
16.04.2017
17:24:28
@Kleidemos И есть библиотека получше и поживее, кажется.

Google

Evgeniy
16.04.2017
17:24:29
Сек.

Илья
16.04.2017
17:24:44
для чего практически применяется F#?
веб? мобилы? может десктоп? ?

Friedrich
16.04.2017
17:25:14

Evgeniy
16.04.2017
17:25:24
А, нет, не лучше и не живее.
https://github.com/Lleutch/ConstraintTP

Igor
16.04.2017
17:25:44

Илья
16.04.2017
17:26:09

Evgeniy
16.04.2017
17:26:23
@DarkByte2016 Вы хотите об этом поговорить?

Klei
16.04.2017
17:26:29
Ну давай сыль
Вот это получше будет:
https://fsharpforfunandprofit.com/ddd/

Илья
16.04.2017
17:26:57

Igor
16.04.2017
17:27:08

Friedrich
16.04.2017
17:27:22
веб? мобилы? может десктоп? ?
Многие вещи лучше удаются (работа с БД и XML с тайп-провайдерами), кое-где мы отстаём за счёт C#-first тулинга (ну, в WPF, например).
Я делаю всякие сайтики на F#. С десктопом туговато по вышеописанным причинам; с мобилами получше (благодаря тому, что Xamarin и с C# не ахти как работает, и сложно было бы сделать хуже на F#), но я не слышал про тех, кто бы мобилы на F# программировал.

Nikolay
16.04.2017
17:27:29

Friedrich
16.04.2017
17:27:53

Evgeniy
16.04.2017
17:28:14
@fvnever @DarkByte2016 Ну, под мобилы forki пишет.
Fable + React Native.
В продакшене.

Friedrich
16.04.2017
17:29:02
А исходников нет? :)
В общем-то порт на неткор вот тут весь: https://github.com/ForNeVeR/fornever.me/pull/54/commits/8930d9e7209cd05cec668165f8dff1aae474801c
Эта версия компилируется. А дальше я уже переархитектурить начал, и из-за этого дифы стали совсем красные, хоть изменения и тривиальные.

Igor
16.04.2017
17:30:22

Friedrich
16.04.2017
17:30:36
Roslyn-то есть, да. А вот VB до сих пор не работает на неткоре, например.
Ну то есть светлого будущего у языка не видится.