
Evgeniy
16.05.2017
19:43:06
Котик Пожалуйте.

Roman
16.05.2017
19:43:09
типа
let parseSmth1 = parse Smth1Type
let parseSmth2 = parse Smth2Type
Привет!

Котик
16.05.2017
19:44:13
Привет ! Тестириую телеграмчик. Тут уютно ??

Google

Roman
16.05.2017
19:44:23

Котик
16.05.2017
19:45:17
Первый раз слышу про gitter

Evgeniy
16.05.2017
19:45:35
Котик Так откуда вы к нам пожаловали?

Pavel
16.05.2017
19:46:04

Котик
16.05.2017
19:46:16
С вк мигририовал

Pavel
16.05.2017
19:46:36
у меня так serialize / deserialize описан был для ProtoBuf-классов
let inline deserializeEvent (buffer: byte[]) =
(^a : (static member Parser : Google.Protobuf.MessageParser< ^a>) ()).ParseFrom(buffer)
В этом примере берется статик-свойство класса

Roman
16.05.2017
19:49:53

Pavel
16.05.2017
19:50:04
Наверное можно было пойти дальше и сказать, что свойство Parser тоже имеет ParseFrom : byte [] -> 't метод

Roman
16.05.2017
19:50:15
Но да идея прям на поверхности

Pavel
16.05.2017
19:50:48
Там синтаксис немного странный + не забудь inline - я забывал много раз и очень долго думал, что именно не так

Google

Roman
16.05.2017
19:51:45

Friedrich
17.05.2017
04:22:57
Пс, эй, чуваки! Мы тут тихонько пытаемся в продакшен протащить тесты на SwaggerTypeProvider ?
@sergey_tihon спасибо большое за этот пакет!

Pavel
17.05.2017
05:39:13

Friedrich
17.05.2017
05:39:25
Ага.

Pavel
17.05.2017
05:39:55
Я пробовал к Suave привязать swagger - приходится много приседать.
Когда хочется vzhuh!

Friedrich
17.05.2017
05:40:47
Это надо доархитектуривать в самом Suave, я так понимаю?
К Freya я тоже не представляю, как это можно прикрутить :)

Pavel
17.05.2017
05:41:38
Ну на мой взгляд было проще в json руками описать, чем писать предложенный код
FsCheck кстати умеет типы из тайп-провайдеров генерить и шринкать?

Artemy
17.05.2017
06:08:13
Доброе утро. Такой вопрос... Как я понимаю, пока ещё нету инструмента, генерируюещего XML-документацию по Markdown-комментариям, как в FSharp.Formatting, например?

Evgeniy
17.05.2017
06:46:24
@skalinets Привет!

Sergey
17.05.2017
07:45:18

Pavel
17.05.2017
07:58:33
Есть более правильный вариант?

Vasily
17.05.2017
08:02:07
А в чем там основная проблема? Роуты подцепить?

Илья
17.05.2017
08:55:10
в фишарпе main разве не должен как в сишарпе возвращать int? мне почему-то пишету такую ошибку на попытку вернуть 1
Program.fs(16, 9): [FS0001] This expression was expected to have type unit but here has type int

Roman
17.05.2017
08:55:34

Google

Илья
17.05.2017
08:56:39
Код?
да ниче особенного
if args.Length = 0 then
1

Ilya
17.05.2017
08:57:19
а else?

Илья
17.05.2017
08:57:26
причем если я ставлю () т.е. unit то ошибка пропадает

Ilya
17.05.2017
08:58:03
без else же нельзя.

Илья
17.05.2017
08:58:14
можно
с чего ты взял

Roman
17.05.2017
08:58:44
А весь код?

Ilya
17.05.2017
08:58:53
если бы возвращаемым значением было unit, то можно, а с не unit нельзя
напиши else 2
тогда все заработает

Илья
17.05.2017
08:59:21
А весь код?
[<EntryPoint>]
let main args =
if args.Length = 0 then
1
0

Ilya
17.05.2017
09:00:28
тут иф это экспрешен. Можно смотреть как на тернарный оператор из си шарпа.

Artemy
17.05.2017
09:00:32
if ... then ... else - выражение (типа как ?..: в C#). Просто при опущенном else оно по умолчанию возвращает unit
как это нельзя?))))

Илья
17.05.2017
09:02:01
аа понял...
эдакое дополнительное принуждение к чистоте кода ?

Artemy
17.05.2017
09:03:24
Ну типа фишка в том, что всё - выражение, возвращающее какое-то значение.

Google

Evgeniy
17.05.2017
09:06:31
> .NET Core 2.0 hits zero-bug-goal! Yay! (for bugs filed before 5/10)

Илья
17.05.2017
09:07:14
есть такой код
[<EntryPoint>]
let main args =
if args.Length = 0 || not Directory.Exists(args.[0]) || args.Length > 1 && not Directory.Exists(args.[1])
then
1
else
0
почему у меня на not Directory.Exists(args.[0]) ругается?
Program.fs(13, 31): [FS0597] Successive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized

Artemy
17.05.2017
09:07:52
not <| Directory.Exists(args.[0])
или
not (Directory.Exists(args.[0]) )

Vasily
17.05.2017
09:08:05
not (Directory.Exists)

Ilya
17.05.2017
09:08:06
связано с применением аргументов. F# думает, что ты передаешь в функцию not 2 аргумента Directory.Exists и args.[0]

Илья
17.05.2017
09:09:46
not (Directory.Exists args.[0])

Admin
ERROR: S client not available

Artemy
17.05.2017
09:10:37
Можно ещё через композицию функций:
(not « Directory.Exists) args.[0]
:)

Pawel
17.05.2017
09:13:54

Илья
17.05.2017
09:19:32
кстати почему в райдере нельзя добавлять FS файлы? приходится добавлять обычный текстовый файл и менять ему расширение, а пункта добавить fs файл - нету
хотя проект фишарповый

Sergey
17.05.2017
09:26:17
Есть более правильный вариант?
с suave не знаю.
но есть прототип SwaggerProviderServer....
т.е. делать API schema-first
1) ты пишешь swagger.yaml руками
2) даешь его SwaggerProvider от делает тебе клиента на это API
3) даешь его SwaggerProviderServer, он генерит тебе сервер, куда тебе надо что-то вроде "зарегать колбжки на вызоры" а список сервисов и сигнатуры контролирует схема

Илья
17.05.2017
10:24:39
Как использовать несколько файлов в проекте? Я добавил файл с кодом (помимо того файла в котором Main) и у меня теперь во первых не видит то что объявлено в этом втором файле, а во вторых ругается на open System в первом файле
Program.fs(1, 1): [FS0222] Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'. Only the last source file of an application may omit such a declaration.

Klei
17.05.2017
10:27:10

Илья
17.05.2017
10:29:40

Летучая
17.05.2017
10:30:29
Опусти ниже референсов

Google

Летучая
17.05.2017
10:30:41
)))

Илья
17.05.2017
10:30:52

Evgeniy
17.05.2017
10:31:15
@DarkByte2016 В сообщении об ошибке говорится, что нужны или неймспейсы, или модули.

Летучая
17.05.2017
10:31:25
Вот
Положи в неймспейс все

Илья
17.05.2017
10:32:24
Я не знал что это обязательное условие.

Artemy
17.05.2017
10:32:32
+ let-объявления могут лежать только в модуле или типе (не в Namespace)

Илья
17.05.2017
10:34:08
поторопился
нихера не работает
вообще
снова появилась эта дурацкая ошибка
и по прежнему я не вижу в первом файле имен из второго

Artemy
17.05.2017
10:36:01
М.б. импорт модуля не сделан?

Илья
17.05.2017
10:36:35

Artemy
17.05.2017
10:37:09
Ну можно полное (qualified) имя использовать, конечно.
Типа ModuleName.func
Или же, если модуль используется везде, можно предварить его объявление атрибутом [<AutoOpen>]

Летучая
17.05.2017
10:38:09

Илья
17.05.2017
10:39:24