@Fsharp_chat

Страница 60 из 772
Vasily
21.04.2017
08:14:09
С помощью SqlCommandProvider

Если писать руками , то у нас две точки входа - sql - файлы плюс обертка на каждый

Если же обертку генерить стандартно, то точкой входа и источником генерации является SQL, подложенный в конкретную папочку

Или дерево папок

Google
Pavel
21.04.2017
08:16:05
Ну напиши батник, который тебе F#-код сгенерит

Дед Пегас
21.04.2017
08:16:16
Лущ powershell.

Vasily
21.04.2017
08:16:27
Батник мне тут не особо поможет

Потому как нужен compile-time check

Ну и не хочется в билд таргеты батник пихать

Evgeniy
21.04.2017
08:17:13
Vasily Ты хочешь провайдер, который, используя другие провайдеры, будет генерировать типы?

Pavel
21.04.2017
08:17:13
Лущ powershell.
Чувак, ты в FSharp-канале.

Дед Пегас
21.04.2017
08:17:30
Чувак, ты в FSharp-канале.
Ну не батники же делать..

Evgeniy
21.04.2017
08:17:42
Да, это интересно.

Pavel
21.04.2017
08:17:53
Батник, который запускает fsi.exe generate-code.fsx

Vasily
21.04.2017
08:17:55
Vasily Ты хочешь провайдер, который, используя другие провайдеры, будет генерировать типы?
Точнее, на базе дерева файлов будет генерить нужную иерархию типов

Evgeniy
21.04.2017
08:18:05
Ага.

Google
Vasily
21.04.2017
08:18:11
С помощью других type-providers

Pavel
21.04.2017
08:18:24
СЛОЖНА, я бы кодогенерил.

Vasily
21.04.2017
08:18:31
Тогда ORM можно смело выкидывать нах

СЛОЖНА, я бы кодогенерил.
Я бы не стал, это дополнительный уровень геморроя

Evgeniy
21.04.2017
08:19:04
Сторонняя кодогенерация -- это не очень удобно, я думаю.

Vlad
21.04.2017
08:19:16
в одной из орм видел T4 для генерации c# классов

Vasily
21.04.2017
08:19:23
Нунах

Это не то

Pavel
21.04.2017
08:19:33
почему сторонняя? .fsx лежит в этом же проекте, genereate-code.fsx запускается в pre-build скрипте

Evgeniy
21.04.2017
08:19:50
Это все поддерживать надо. :)

Pavel
21.04.2017
08:19:57
Я просто не знаю, насколько классно у тебя получится из тайп-провайдера генерить типы, которые юзают другие тайп-провайдеры

Vasily
21.04.2017
08:19:57
Во-во

Pavel
21.04.2017
08:20:08
А type-provider написать типа проще?

Evgeniy
21.04.2017
08:20:17
Ну, это несложно.

Надо попробовать!

Pavel
21.04.2017
08:20:24
Ну ты писал, да?

Vasily
21.04.2017
08:20:25
А type-provider написать типа проще?
Его написал один раз, отладил, и все

Evgeniy
21.04.2017
08:20:33
@pavelhritonenko Да, писал.

Vasily
21.04.2017
08:20:39
Дальше - забота компилятора

Pavel
21.04.2017
08:20:55
И что, можно отдавать методы, в которых другие тайп-провайдеры используются?

Google
Pavel
21.04.2017
08:21:07
В смысле можно подобные типы генерить из тайппровайдера?

Evgeniy
21.04.2017
08:21:15
А вот это не знаю. Давайте попробуем?

Доберусь до дома, проведу эксперимент.

Vasily
21.04.2017
08:21:28
Я бы попробовал

http://fsprojects.github.io/FSharp.Data.SqlClient/configuration%20and%20input.html

Раздел Overriding connection string at run-time

В т.ч. поможет

Vlad
21.04.2017
08:23:32
Это...вопрос более приземленный: какой самый правильный способ борьбы с null? А то у меня с isNull лыжи что-то не едут

Vasily
21.04.2017
08:23:37
Some

Точнее Option

Pavel
21.04.2017
08:23:56
Option.ofNull - но будь осторожен, это структура

Vlad
21.04.2017
08:24:11
let nullToOption x = let result = isNull x match result with | true -> None | _ -> Some(x)

возвращает мне null

Pavel
21.04.2017
08:24:18
В смысле Option - это не структура, поэтому если пол лярда в память положишь, GC будет работать

https://github.com/jack-pappas/ExtCore/blob/42d629bc434248f77c2a8fc663b92167079d071f/ExtCore/Pervasive.fs#L821

Evgeniy
21.04.2017
08:42:56
Vlad @pavelhritonenko Option.ofObj

Pavel
21.04.2017
08:43:12
Это в F# 4.1, да?

Сегодня в паравозе поеду - посмотрю что там нового

Evgeniy
21.04.2017
08:43:50
Вроде нет.

Google
Pavel
21.04.2017
08:43:53
А, даже в 4.0

Evgeniy
21.04.2017
08:43:59
Да, 4.0

В 4.1 добавили вот эти функции. https://github.com/Microsoft/visualfsharp/pull/1781

Pavel
21.04.2017
08:45:50
Мы 3.1 использовали долго, по привычке ExtCore референшу.

Vlad
21.04.2017
08:53:25
let replyToMessage = Option.ofObj textMessage.ReplyToMessage

replyToMessage : null

это апи телеграма, ReplyToMessage - свойство. не могу найти проблему что-то

Pavel
21.04.2017
08:56:03
Не очень понятно, что ты хочешь

Vlad
21.04.2017
08:57:27
ReplyToMessage может быть null, пытаюсь его обернуть в Option через Option.ofObj

как результат имею не Option, а null

почему - понять пока не могу

Vlad
21.04.2017
08:59:13
да.

Nikolay
21.04.2017
08:59:25
Эмм, такое разве возможно?

Evgeniy
21.04.2017
08:59:27
Vlad А как проверяешь, что там null?

Friedrich
21.04.2017
08:59:39
Vlad а дженерики в C# (точнее в .NET) появились только затем, что они нужны были Дону Сайму в F#
Не совсем так. Дон принимал участие в разработке генериков для CLR, вот и всё. Для всех языков. Они потом появились в C# и F#. Ну, потому что они же не могут появиться в языке раньше чем в среде :)

Evgeniy
21.04.2017
09:00:51
Vlad Просто, например, None отображается в REPL как <null>. Старая история, кажется @fvnever ишшуй заводил на эту тему.

Friedrich
21.04.2017
09:00:59
Чувак, ты в FSharp-канале.
А я люблю смешивать F# и повершелл! Даже тайп-провайдер для этого есть :3

Pavel
21.04.2017
09:01:27
Microsoft (R) F# Interactive version 4.1 Copyright (c) Microsoft Corporation. All Rights Reserved. > let (str: string) = null;; val str : string = null > Option.ofObj str;; val it : string option = None

Evgeniy
21.04.2017
09:02:05
Хм, починили уже? Отлично. :)

Google
Evgeniy
21.04.2017
09:02:12
Давай тогда дальше думать.

Friedrich
21.04.2017
09:02:29
Про отображение там уже был баг, и он только в хитрых случаях так криво отображается.

Evgeniy
21.04.2017
09:03:13
А починили, кажется, только отображение.

Pavel
21.04.2017
09:03:19
> None.GetType();; System.NullReferenceException: Object reference not set to an instance of an object. at <StartupCode$FSI_0004>.$FSI_0004.main@() Stopped due to error

Friedrich
21.04.2017
09:03:22
Кажется, ничего не починили :(

Igor
21.04.2017
09:03:25
Кстати, вот оригинал (вроде не было) полюбившегося видео про "болонхил" ? Спикер Mark Seemann, тот же что и про "from DI to Dep. rejection" https://youtu.be/US8QG9I1XW0

Evgeniy
21.04.2017
09:03:50
Vlad Не, это фигня. :)

Pavel
21.04.2017
09:03:56
<null> - это None

Evgeniy
21.04.2017
09:03:59
Там None.

Vlad
21.04.2017
09:04:03
кхм.

Evgeniy
21.04.2017
09:04:04
Верь нам.

Pavel
21.04.2017
09:04:30
> sprintf "%A" None;; val it : string = "<null>"

Friedrich
21.04.2017
09:05:13
Кстати, вот оригинал (вроде не было) полюбившегося видео про "болонхил" ? Спикер Mark Seemann, тот же что и про "from DI to Dep. rejection" https://youtu.be/US8QG9I1XW0
Ну, "наш" спикер всё-таки и из других докладов видео скомпоновал, так что я бы всё-таки не стал его ругать :) Да, этого видео ещё не было, я себе добавлю в список на просмотр. Спасибо.

Evgeniy
21.04.2017
09:09:03
Кстати, папир про дженерики в .Net -- это 2001 год.

С примерами на C#.

Самые ранние упоминания об F#, которые я находил, это 2002 год.

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