MLStyle Extension List

MLStyle Extension List

GADT

@use GADT

@data S{G} begin
    S1{T} :: T => S{G} where G
end

let x :: S{String} = S1(2)
    @match x begin
        S1{T}(a) where T <: Number => show(a + 1)
        _ => show("failed")
    end
end

outputs

3

UppercaseCapturing

@use UppercaseCapturing

@match 1 begin
    A => A + 1
end

outputs:

2

Enum

@use Enum
@data A begin
    A1()
    A2()
end

@match A1() begin
    A1 => 1
    _ => 2
end
# output: 1

@active IsEven(x) begin
    x % 2 === 0
end
@match 4 begin
    IsEven => :ok
    _ => :err
end
# output: :ok