2017-08-27 4 views
0

Ma compréhension du polymorphisme de ligne dans ML est que nous pouvons accéder à la variable de ligne dans la fonction.Accéder à la variable de ligne dans la fonction

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}; *) 

Juste curieux si cela est possible dans PureScript.

Répondre

2

Je suppose que vous voulez update certaines propriétés d'un enregistrement sans jeter les autres propriétés:

f :: forall r. { x :: Int, y :: Int | r } -> { x :: Int, y :: Int | r } 
f r = r { x = r.x * 2, y = r.y * 2 }