在函数中访问行变量
Accessing the row variable within the function
我对行多态性的理解ML是我们可以在函数内访问行变量。
fun f {x : real, y : real, R} = {x = 2 * x, y = 2 * y, R};
=> (* f : {x : real, y : real, _ : ..a} -> {x : real, y : real, _ : ..a} *)
f {x = 2.0, y = 3.0, z = 4.0};
=> (* it = {x = 4.0, y = 6.0, z = 4.0}; *)
只是好奇这在 PureScript 中是否可行。
我假设您想 update 记录的某些属性而不丢弃其他属性:
f :: forall r. { x :: Int, y :: Int | r } -> { x :: Int, y :: Int | r }
f r = r { x = r.x * 2, y = r.y * 2 }
我对行多态性的理解ML是我们可以在函数内访问行变量。
fun f {x : real, y : real, R} = {x = 2 * x, y = 2 * y, R};
=> (* f : {x : real, y : real, _ : ..a} -> {x : real, y : real, _ : ..a} *)
f {x = 2.0, y = 3.0, z = 4.0};
=> (* it = {x = 4.0, y = 6.0, z = 4.0}; *)
只是好奇这在 PureScript 中是否可行。
我假设您想 update 记录的某些属性而不丢弃其他属性:
f :: forall r. { x :: Int, y :: Int | r } -> { x :: Int, y :: Int | r }
f r = r { x = r.x * 2, y = r.y * 2 }