@Fsharp_chat

Страница 36 из 772
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
Проблема по всей видимости в том, что в F# записи не могут быть null
В f# ничего не может быть null, для того чтоб проверить на null, надо сделать боксинг

(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
Я бы операции типа залезть в бд или опросить сервис. Оборачивал бы Result вместо Option.
Ну эта же не ошибка, а проверка наличия. А обрабатывать результат, как будто любой запрос из базы может вернуть ошибку, какой-то оверинжинирнг.

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
А что надо вернуть если null?
Хочется что бы нескомпилировалось

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
А сейчас есть на что посмотреть?

Friedrich
16.04.2017
16:42:51
Чистоту функций соблюдал?
Воистину воскресе!

(нет, не соблюдаю и никогда не соблюдал; здесь вам не Хаскель)

Впрочем, оно как-то само собой выходит. Если в приложении ничего мутабельного нету — значит, оно всё чистое :)

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

Friedrich
16.04.2017
16:44:34
@fvnever Предлагаю об успешном переходе на .Net Core написать в твиттер. :)
Да, хорошая идея. Как выведу в продакшен — напишу.

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

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

Igor
16.04.2017
16:45:21
(нет, не соблюдаю и никогда не соблюдал; здесь вам не Хаскель)
Что же сразу на C# не пишешь? Вбрасывали же видео, что есть вариант держать чистыми хотя бы доменные функции (и без всяких монад).

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
Очень симпатично и архитектурно бы выходило.

https://docevaad.github.io/Chain
Отдельное спасибо за https://github.com/FransBouma/DocNet :)

Я давно искал такую штуку.

Evgeniy
16.04.2017
16:50:01
@angmarr А от того видео я до сих пор оправиться не могу.

Так и представляю себе болл, который нужно зафорсить на топ хилла.

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

Бже. Он и правда предлагает зафорсить болл на хилл %)

Igor
16.04.2017
17:09:56
Бже. Он и правда предлагает зафорсить болл на хилл %)
Но мысли здравые. Я что то подобное у Рич Хики слышал (хотя в clojure и нет типов).

Evgeniy
16.04.2017
17:12:53
@angmarr Про это ploeh пишет.

Я думаю, получше, чем в докладе рассказано.

Google
Igor
16.04.2017
17:14:45
Я думаю, получше, чем в докладе рассказано.
> 2k17 > читать ?? (если он такой умный, что же доклад не сделает?)

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

Igor
16.04.2017
17:17:28
Лучше прочитать хороший текст, чем слушать про болл на хилле. :)
Суть в том что это вообще старая идея, просто хорошо что это кто то пропагандирует.

Friedrich
16.04.2017
17:17:53
А есть какая-нибудь защита от посылания null сюда? let toUpper (x: string) = x.ToUpper()
Кстати говоря, я рекомендую все null-ы сразу преобразовывать в Option. В бизнес-коде у меня никогда не бывает null, за редчайшими исключениями. 1. Если я вызвал какой-то C#-метод, про который известно, что он может вернуть null — сразу заворачиваю в Option.ofObj. 2. Мои собственные функции никогда не возвращают null, я себе запрещаю.

Это позволяет никогда не видеть 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 Мне просто не понравился доклад.

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

В JDK 8 :)

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
Или у Котлина своя стандартная либа для портабельности в JS и native?
Есть своя маленькая, состоящая в основном их экстеншен-методов

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
для чего практически применяется F#?
В целом можно делать всё то же, что на C#.

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

Igor
16.04.2017
17:25:44
для чего практически применяется F#?
А для чего практически применяется VB? ?

Илья
16.04.2017
17:26:09
В целом можно делать всё то же, что на C#.
можно то можно, вот только делают ли... на C# специалистов еще можно найти (хоть тоже не бог весть сколько), а вот про F# мало кто вообще знает

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
А для чего практически применяется VB? ?
вб мертвый язык имхо нужный для того чтобы нещадно насиловать детские умы в школах на уроках программирования

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

Friedrich
16.04.2017
17:27:53
А исходников нет? :)
Пф, разумеется есть. https://github.com/ForNeVeR/fornever.me/pull/54

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
вб мертвый язык имхо нужный для того чтобы нещадно насиловать детские умы в школах на уроках программирования
Только вот какого-то хера, он до сих пор на 7 месте TIOBE. И MS его развивает и поддерживает Roslyn.

Friedrich
16.04.2017
17:30:36
Roslyn-то есть, да. А вот VB до сих пор не работает на неткоре, например.

Ну то есть светлого будущего у языка не видится.

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