Size: a a a

2021 May 28

AH

Ayrat Hudaygulov in F# Chat
Ну в фшарп тип нал не положить
источник

AH

Ayrat Hudaygulov in F# Chat
и уже совсем скоро нельзя будет так писать
источник

AH

Ayrat Hudaygulov in F# Chat
года через 3
источник

AH

Ayrat Hudaygulov in F# Chat
:D
источник

AH

Ayrat Hudaygulov in F# Chat
когда все либы сишарпа разметят нулаблами
источник

IC

Ilya L Che in F# Chat
10+ лет тогда. В какой-нибудь селениум точно за 3 года не затащат.
источник

I

IdiocyAcceptance in F# Chat
Логично только для реф типов
источник

I

IdiocyAcceptance in F# Chat
Some 0 - это дефолт инта или валидный результат?
источник

IC

Ilya L Che in F# Chat
Да, конечно. Про это я помнил.
источник

I

IdiocyAcceptance in F# Chat
ValueSome в помощь!
источник

VP

Vladislav Podporkin in F# Chat
А вот в расте любой Option это ValueOption.

Но при этом некоторые типы могут быть помечены так называемой "нишей", которая, заставляет компилятор использовать это значение в качестве None.
Например, для ссылки ниша null, позволяет помещать их в опшен без добавления тега-поля.
Или ниша файлового дескриптора юникс (-1 или 0, не помню). Его Option также будет бесплатен.

Вроде даже было обсуждение расширить это на любой вид enum (DU в F#), с одним пустым вариантом и одним вариантом со значением.
источник

VP

Vladislav Podporkin in F# Chat
источник

VP

Vladislav Podporkin in F# Chat
Ну и такая оптимизация для структурных ДУ, конечно. Мне кажется, Фш тоже мог бы делать это для полей одинакового типа
источник

A

Andy 安迪 in F# Chat
Народ, я тут попробовал обновиться до Жирафа 5, но он не работает, похоже, с Fable.Remote. Поиск не принёс пока результатов - похоже, свежая проблема.  Кто-то уже знает, как бороться?

Error Message:
  Could not load type 'SubRouting' from assembly 'Giraffe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
 Stack Trace:
    at Fable.Remoting.Giraffe.GiraffeUtil.buildFromImplementation@39-1.Invoke(Unit unitVar)
  at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\workspace\_work\1\s\src\fsharp\FSharp.Core\async.fs:line 386
  at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\workspace\_work\1\s\src\fsharp\FSharp.Core\async.fs:line 104
--- End of stack trace from previous location ---
  at Giraffe.Core.chooseHttpFunc@125-1.Invoke(Unit unitVar0)
  at Ply.TplPrimitives.ContinuationStateMachine`1.System-Runtime-CompilerServices-IAsyncStateMachine-MoveNext()
  at Giraffe.Middleware.Invoke@33-1.Invoke(Unit unitVar0)
  at Ply.TplPrimitives.ContinuationStateMachine`1.System-Runtime-CompilerServices-IAsyncStateMachine-MoveNext()
  at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
  at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
  at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
источник

PD

Prunkles Dreemurr in F# Chat
https://github.com/Zaid-Ajaj/Fable.Remoting/tree/master/Fable.Remoting.GiraffeNET5
У них в репо отдельный проект под жираф5 есть, но в ньюгете я его не нашёл
источник

PD

Prunkles Dreemurr in F# Chat
Видимо ещё не успели с какими-нибудь breaking changes справиться
источник

A

Andy 安迪 in F# Chat
Ага, понял, спасибо. Будем ждать
источник

I

IdiocyAcceptance in F# Chat
У тебя там int и tuple. Это как минимум означает что их нельзя миксовать вместе в одно поле
источник

I

IdiocyAcceptance in F# Chat
С ValueTuple ещё можно согласиться, с обычной нет
источник

VP

Vladislav Podporkin in F# Chat
Речь именно о структурных ДУ. И они все же не хранят в себе тупл отдельно.
Хотя, обычные ДУ тоже хранят это полями, а не туплом.

https://sharplab.io/#v2:DYLgZgzgNAJiDUAfA9gBwKYDsAEBlAnhAC7oC2AsAFBVH4bYDC2AvFdu9otgILbJjYAhgEYQ2AJaYibDlwBCfAQCNREqdgBU2JQCYxk6ZQ7YqQA=
источник