Size: a a a

F# Flood: r/FreeFolk

2020 February 29

P

PoggiGoppi in F# Flood: r/FreeFolk
Vasily Shapenko
Лучше гит
там один файл небольшой
источник

P

PoggiGoppi in F# Flood: r/FreeFolk
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
PoggiGoppi
там один файл небольшой
Гист есть
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
Create a new Gist
https://gist.github.com/
источник

P

PoggiGoppi in F# Flood: r/FreeFolk
Ayrat Hudaygulov
Гист есть
целых два, но я ссылки на них потерял
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
Вот сюда залей хотя бы
источник

P

PoggiGoppi in F# Flood: r/FreeFolk
я на пастбин заливаю
источник

P

PoggiGoppi in F# Flood: r/FreeFolk
вот он, тот самый
источник

P

PoggiGoppi in F# Flood: r/FreeFolk
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
type Operator =
   | Oper of (Expr -> Expr)
   | Oper2 of (Expr -> Expr -> Expr)
and Expr =
   | Exprs of Expr * Operator * Expr
   | Expr of Operator * Expr
   | Num of int
 
type Operator with =
   member this.Invoke expr1 expr2 =
       match this with
       | Oper(x) -> x expr1
       | Oper2(x) -> x expr1 (Option.get expr2)

let rec int expr =
   match expr with
   | Num(x) -> x
   | Expr(op, x) -> int <| op.Invoke x None
   | Exprs(x, op, y) -> int <| op.Invoke x (Some(y))
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
в пределах модуля можно вытворять вот такие штуки
источник

VK

Vladislav Khapin in F# Flood: r/FreeFolk
PoggiGoppi
а в фшарпе с модулями тоже можно без and?
module rec
источник

P

PoggiGoppi in F# Flood: r/FreeFolk
Ayrat Hudaygulov
в пределах модуля можно вытворять вот такие штуки
объявление методов вне объявления типа?
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
PoggiGoppi
объявление методов вне объявления типа?
ага
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
это называется Type Extension, если сделано в пределах одного модуля, то оно будет частью одного типа
источник

SB

S B in F# Flood: r/FreeFolk
Ayrat Hudaygulov
type Operator =
   | Oper of (Expr -> Expr)
   | Oper2 of (Expr -> Expr -> Expr)
and Expr =
   | Exprs of Expr * Operator * Expr
   | Expr of Operator * Expr
   | Num of int
 
type Operator with =
   member this.Invoke expr1 expr2 =
       match this with
       | Oper(x) -> x expr1
       | Oper2(x) -> x expr1 (Option.get expr2)

let rec int expr =
   match expr with
   | Num(x) -> x
   | Expr(op, x) -> int <| op.Invoke x None
   | Exprs(x, op, y) -> int <| op.Invoke x (Some(y))
А зочем?
источник

SB

S B in F# Flood: r/FreeFolk
Каков юзкейз?
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
S B
А зочем?
ну типа по частям объявлять взаимнорекурсивные типы без рекурсии
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
типа вот 1ая часть типа А, вот 1ая часть типа Б, которая зависит от 1ой части А, вот вторая часть типа А, которая зависит от 2ой части типа Б и пр
источник

AH

Ayrat Hudaygulov in F# Flood: r/FreeFolk
код получается нерекурсивный, а просто обычный, но типы собираются по кускам, а не разом
источник