
Roman
26.04.2017
17:18:56

Vasily
26.04.2017
17:19:05
Ну и создавать надо в файлах выше по списку

Roman
26.04.2017
17:19:20

Vasily
26.04.2017
17:19:23
'a->

Google

Roman
26.04.2017
17:19:46
'a->
можешь набросать? Я не понимаю как это будет работать

Vasily
26.04.2017
17:20:19
Мне очень не хочется, чтобы сделали определение типов не по порядку. Код будет в разы труднее читать

Roman
26.04.2017
17:20:54

Nikolay
26.04.2017
17:21:08
А как явно задать Record, который я создать хочу?

Roman
26.04.2017
17:21:11
надеюсь до порядка файлов не дойдет.

Vasily
26.04.2017
17:21:52
Я с телефона :(
Some v

Roman
26.04.2017
17:22:18

Schvepsss
26.04.2017
17:22:59
Всем привет! Никто случаем не сталкивался с ситуацией, когда UWP дев-билды не ставятся на телефоны тестировщиков?

Vasily
26.04.2017
17:23:47
Released http://FSharp.NET .Sdk v1.0.3
The new fsproj now works with others msbuild (.NET FW and #mono) #fsharp
https://github.com/dotnet/netcorecli-fsc/releases/tag/v1.0.3

Akhmed
26.04.2017
17:23:47
Вот вопрос в чате F# разработчиков прозвучал как обидно с учетом того что UWP до сих пор не поддерживает F# ))))

Schvepsss
26.04.2017
17:25:18

Google

Schvepsss
26.04.2017
17:25:35
хотя наверно пойду ещё в ксамарин схожу

Roman
26.04.2017
17:25:46
Match v with
|?: string as s ->Some s
static member inline Test (someId: ^a) =
match someId with
| :? string as s -> Some s
| :? int as i -> Some i
| :? BigInt -> Some i
| _ -> None
как-то так?

Akhmed
26.04.2017
17:26:02
А что за ошибку выдает?
При попытке установки?

Vasily
26.04.2017
17:26:33

Schvepsss
26.04.2017
17:27:04
А что за ошибку выдает?
Симптомы: переводим телефон в режим developer или sideload, закачиваем appxbundle на трубку, инсталируем - и ничего не происходит, хоть минуту жди, хоть час.

Akhmed
26.04.2017
17:27:32
Виснет или не запускается вообще?

Vasily
26.04.2017
17:27:55
Главный вопрос-везде себя так ведет?
Второй вопрос -после каких изменений викодовой базе/процессе сборки это началось?

Artemko
26.04.2017
17:29:06

Vasily
26.04.2017
17:29:11
Ну а дальше кропотливый анализ

Schvepsss
26.04.2017
17:29:23

Nikolay
26.04.2017
17:30:15

Roman
26.04.2017
17:30:51

Nikolay
26.04.2017
17:31:11
Не, это фигня

Roman
26.04.2017
17:31:33

Nikolay
26.04.2017
17:31:36
Зачем нам тогда статическая типизация?)

Vasily
26.04.2017
17:31:41
Тогда du
На самом деле есть трюк, чтобы заработало
Тсапалис недавно показывал

Google

Evgeniy
26.04.2017
17:32:56
TypeShape?

Nikolay
26.04.2017
17:33:06
Я хочу, чтобы выглядело так:
let a = someFunc 123
let b = someFunc "123"
С du я так понимаю не получится

Vasily
26.04.2017
17:33:27
Вместо a->some a надо a-> option r

Evgeniy
26.04.2017
17:34:12
Vasily Царьпалис! Или цареборец.

Nikolay
26.04.2017
17:34:16

Vasily
26.04.2017
17:34:17
Укажи явно тип возвращаемый как b , например

Evgeniy
26.04.2017
17:34:18
Надмозг, да. :)

Vasily
26.04.2017
17:35:12

Evgeniy
26.04.2017
17:35:38
Ага.

Летучая
26.04.2017
17:35:40
Бтв девю на увп, не сталкивался.

Roman
26.04.2017
17:36:16

Schvepsss
26.04.2017
17:36:19

Vasily
26.04.2017
17:37:13

Летучая
26.04.2017
17:37:23

Roman
26.04.2017
17:37:31

Vasily
26.04.2017
17:37:54
Пока в код въедешь,аж употеешь

Schvepsss
26.04.2017
17:38:03

Vasily
26.04.2017
17:38:34
Причем никакой перегрузки операторов

Nikolay
26.04.2017
17:39:13
https://gist.github.com/Dolfik1/fa70485b8b4d88e231c177947e275f6c

Google

Nikolay
26.04.2017
17:39:18
Короче ужас)

Vasily
26.04.2017
17:39:21
Все на чистых языковых конструкциях

Klei
26.04.2017
17:41:10

Roman
26.04.2017
17:41:11
Вместо a->some a надо a-> option r
т.е.
static member inline Test (someId: ^a):option<'r> =
match someId with
| :? string as s -> Some s
| :? int as i -> Some i
| :? BigInt -> Some i
| _ -> None
?)

Vasily
26.04.2017
17:41:37
Угу

Nikolay
26.04.2017
17:41:45

Evgeniy
26.04.2017
17:42:51
@Dolfik Трюк! https://hastebin.com/idebolawok.fs Осторожно! Не использовать в продакшене!

Klei
26.04.2017
17:42:56

Nikolay
26.04.2017
17:44:07
match box someId with
На int as i:
This expression was expected to have type
'string'
but here has type
'int'

Roman
26.04.2017
17:44:12

Летучая
26.04.2017
17:44:56
ваще самый норм вариант эт перегрузки же

Klei
26.04.2017
17:46:56

Evgeniy
26.04.2017
17:47:39
@neftedollar Лишняя нагрузка на голову при чтении кода. И сообщение об ошибке стремное.

Летучая
26.04.2017
17:47:50
Кстати, есть в F# какой-нибудь аналог nameof из C#? Чтоб однострочный INotifyPropertyChanged написать.

Evgeniy
26.04.2017
17:49:31
@Worldbeater Еще не сделали. :(
https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1003-nameof-operator.md

Roman
26.04.2017
17:51:49
ваще самый норм вариант эт перегрузки же
type private MyUnion =
| Int of int
| String of string
| BigInt of int64
type Util = Util with
static member ($) (Util, x:int) = Int(x)
static member ($) (Util, x:int64) = String(x)
static member ($) (Util, x:string) = BigInt(x)
let private doWork = function
| Int x -> CharpClass.Method(x) //int перегрузка
| String x -> CharpClass.Method(x) //string перегрузка
| BigInt x -> CharpClass.Method(x) //int64 перегрузка
// мб можно как-то короче
let inline Test x = Util $ x |> doWork
и нет копипасты

Google

Roman
26.04.2017
17:52:55

Nikolay
26.04.2017
17:53:28
С du ужасно получается:
let a = { Types.MessageArgs.ChatId = Types.IntOrString.I 32 }
Ну можно сократить до:
let a = { ChatId = IntOrString.I 32 }
Но всё равно стрёмно

Roman
26.04.2017
17:55:24

Nikolay
26.04.2017
17:55:33
Нужно знать, что у тебя значит I, S и I64

Roman
26.04.2017
17:55:52

Nikolay
26.04.2017
17:56:05

Evgeniy
26.04.2017
17:56:29
Мне кажется, что это немного странно, что ChatId -- это или int, или string.
Хм.

Klei
26.04.2017
17:56:50
А этот тип в случае string что содержит?

Nikolay
26.04.2017
17:57:00
С перегрузками плохой вариант, если у тебя будет например 2 аргумента

Evgeniy
26.04.2017
17:57:51
Может их разделить в Record?
Два поля.
Одно с id, другое с username.

Nikolay
26.04.2017
17:58:42
+ даст возможность не указывать chat_id, а он обязательный
Итого: полтора часа обсуждаем, как сделать красиво какую-то фигню :D

Klei
26.04.2017
18:00:14