Size: a a a

F# Flood: ПДД made functional, making illegal state INGIBDDdale

2020 May 07

SN

Shub Niggurath in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
потому что из любого типа его не сделаешь
отчего же? pure :: a -> M a
источник

A

Anatoly in F# Flood: ПДД made functional, making illegal state INGIBDDdale
потому что я либо щас начну эксепшны кидать, либо вот Result сделаю
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Shub Niggurath
отчего же? pure :: a -> M a
ты не понял.
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
в случае задания выше - такое пюре не сделаешь
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
потому что там нет a
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
оттого и такие сигнатуры интересные
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
public abstract class Result
{
   public sealed class Ok : Result
   {
       public string AccessToken { get; }
       public string RefreshToken { get; }

       public Ok(string accessToken, string refreshToken)
       {
           AccessToken = accessToken;
           RefreshToken = refreshToken;
       }
   }

   public sealed class Unauthorized : Result
   {
       public static Unauthorized Instance = new Unauthorized();

       private Unauthorized()
       {
       }
   }

   public sealed class HttpError : Result
   {
       public int StatusCode { get; }
       public string Reason { get; }

       public HttpError(int statusCode, string reason)
       {
           StatusCode = statusCode;
           Reason = reason;
       }
   }

   public static Result Return(string accessToken, string refreshToken) =>
       new Ok(accessToken, refreshToken);

   public static Result FlatMap(Result x, Func<Ok, Result> f) => x switch
   {
       Ok ok => f(ok),
       HttpError httpError => httpError,
       Unauthorized unauthorized => unauthorized,
       _ => throw new ArgumentOutOfRangeException(nameof(x))
   };
}
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
public static class ResultExtensions
{
   public static Result FlatMap(this Result x, Func<Result.Ok, Result> f) =>
       Result.FlatMap(x, f);
}
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
всё, впродакшн
источник

M

Mikhail in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
public abstract class Result
{
   public sealed class Ok : Result
   {
       public string AccessToken { get; }
       public string RefreshToken { get; }

       public Ok(string accessToken, string refreshToken)
       {
           AccessToken = accessToken;
           RefreshToken = refreshToken;
       }
   }

   public sealed class Unauthorized : Result
   {
       public static Unauthorized Instance = new Unauthorized();

       private Unauthorized()
       {
       }
   }

   public sealed class HttpError : Result
   {
       public int StatusCode { get; }
       public string Reason { get; }

       public HttpError(int statusCode, string reason)
       {
           StatusCode = statusCode;
           Reason = reason;
       }
   }

   public static Result Return(string accessToken, string refreshToken) =>
       new Ok(accessToken, refreshToken);

   public static Result FlatMap(Result x, Func<Ok, Result> f) => x switch
   {
       Ok ok => f(ok),
       HttpError httpError => httpError,
       Unauthorized unauthorized => unauthorized,
       _ => throw new ArgumentOutOfRangeException(nameof(x))
   };
}
Стоп
источник

A

Anatoly in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
public static class ResultExtensions
{
   public static Result FlatMap(this Result x, Func<Result.Ok, Result> f) =>
       Result.FlatMap(x, f);
}
расскажи, зачем мне FlatMap
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Anatoly
расскажи, зачем мне FlatMap
чейнить как про
источник

M

Mikhail in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
public abstract class Result
{
   public sealed class Ok : Result
   {
       public string AccessToken { get; }
       public string RefreshToken { get; }

       public Ok(string accessToken, string refreshToken)
       {
           AccessToken = accessToken;
           RefreshToken = refreshToken;
       }
   }

   public sealed class Unauthorized : Result
   {
       public static Unauthorized Instance = new Unauthorized();

       private Unauthorized()
       {
       }
   }

   public sealed class HttpError : Result
   {
       public int StatusCode { get; }
       public string Reason { get; }

       public HttpError(int statusCode, string reason)
       {
           StatusCode = statusCode;
           Reason = reason;
       }
   }

   public static Result Return(string accessToken, string refreshToken) =>
       new Ok(accessToken, refreshToken);

   public static Result FlatMap(Result x, Func<Ok, Result> f) => x switch
   {
       Ok ok => f(ok),
       HttpError httpError => httpError,
       Unauthorized unauthorized => unauthorized,
       _ => throw new ArgumentOutOfRangeException(nameof(x))
   };
}
В шарпе разве так можно
источник

M

Mikhail in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Похоже я совсем дурак
источник

VK

Vladislav Khapin in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Mikhail
В шарпе разве так можно
что именно
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Mikhail
В шарпе разве так можно
что именно? это всё валидный код
источник

M

Mikhail in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Чайлд класс реализующий родительский абстрактный
источник

M

Mikhail in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
что именно? это всё валидный код
Понял
источник

M

Mikhail in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Я дебил
источник

M

Mikhail in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Всем спасибо
источник