2016-07-10 3 views
0

Я хочу создать метку в F #, которая использует изменчивую переменную для возврата значения. К сожалению, F # устанавливает эту метку в постоянное значение. Если значение изменчивого изменяется, значение метки остается. Разве это не противоречит? Есть ли способ получить метку («a»), зависящую от изменчивого («x»)?Как связать метку с изменяемой переменной в F #?

let mutable x = 0; 

let a = x + 2; // I want not to set a to a constant value 
let b two = x + two; 

x <- 1; 

let c = b 2; 

let isConsistent = a = c; 


val mutable x : int = 1 
val a : int = 2 
val b : two:int -> int 
val c : int = 3 
val isConsistent : bool = false 
+2

Если вы изучаете F #, почему вы используете 'изменяемые '. Изучение функционального программирования путем переноса идей процедурных и объектно-ориентированных языков, с моей точки зрения, является плохой идеей. –

+0

Я не хочу мутировать самостоятельно. Я хочу, чтобы функция 'a' возвращалась x + 2 – checkThisOut

+2

@checkThisOut, поэтому сделайте ее функцией – Sehnsucht

ответ

5

Ваш собственный комментарий Вы хотите a быть функция, возвращающая х + 2
Прямая трансляция что:

let mutable x = 0 

let a() = x + 2 
let b two = x + two 

x <- 1 

let c = b 2 

let isConsistent = a() = c // don't forget to call the function 'a' 

(* 
val mutable x : int = 1 
val a : unit -> int 
val b : two:int -> int 
val c : int = 3 
val isConsistent : bool = true 
*)