@Fsharp_chat

Страница 135 из 772
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
типа let parseSmth1 = parse Smth1Type let parseSmth2 = parse Smth2Type
как выяснилось это легче сделать как let parseSmth1 = Smth1Type.Parse xD

Котик
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)

В этом примере берется статик-свойство класса

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
Friedrich
17.05.2017
04:22:57
Пс, эй, чуваки! Мы тут тихонько пытаемся в продакшен протащить тесты на SwaggerTypeProvider ?

@sergey_tihon спасибо большое за этот пакет!

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
@sergey_tihon спасибо большое за этот пакет!
пожалуйста, на полном фреймфорке должно не плохо работать)

Я пробовал к Suave привязать swagger - приходится много приседать.
с помощью этого извращения? https://rflechner.github.io/Suave.Swagger/ )

Pavel
17.05.2017
07:58:33
с помощью этого извращения? https://rflechner.github.io/Suave.Swagger/ )
Да это. И, наверное, сказать "пробовал" - неверно. Потому что я посмотрел на это безобразие и пробовать не стал.

Есть более правильный вариант?

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

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 то ошибка пропадает

а else?
без else

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

Илья
17.05.2017
08:58:14
без else же нельзя.
как это нельзя?))))

можно

с чего ты взял

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

напиши else 2
нет, мне это не надо

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)
так понятнее, спс

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
Есть более правильный вариант?
asp net core, сгенерированное сваггером. Единственный правильный я бы сказал

Илья
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.

Илья
17.05.2017
10:29:40
1. Порядок файлов важен. Подними второй файл выше Main. 2. Открой неймспейс.
1. Поднял. Теперь ругается на open System во втором файле. И его данные по прежнему не доступны в первом файле. 2. Я не использовал неймспейс. Просто так написал без неймспейсов.

Летучая
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
и по прежнему я не вижу в первом файле имен из второго
чтобы в первом файле видеть имена из второго, нужно, чтобы второй был выше первого (alt+стрелка вверх) если во втором есть модули, используй open Модульнейм

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