0 people like it.

Ref Example

Deferencing the ref FinalAnswer inside a let produces different results than using !FinalAnswer directly. Why?

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
let FinalAnswer = ref 0.0
let get_final_answer = !FinalAnswer

let rec eval_expr_fail =
        FinalAnswer := 7.0
        get_final_answer        // fails, returns 0.0

let rec eval_expr_works =
        FinalAnswer := 7.0
        !FinalAnswer           // works, return 7.0
val FinalAnswer : float ref

Full name: Script.FinalAnswer
Multiple items
val ref : value:'T -> 'T ref

Full name: Microsoft.FSharp.Core.Operators.ref

--------------------
type 'T ref = Ref<'T>

Full name: Microsoft.FSharp.Core.ref<_>
val get_final_answer : float

Full name: Script.get_final_answer
val eval_expr_fail : float

Full name: Script.eval_expr_fail
val eval_expr_works : float

Full name: Script.eval_expr_works

More information

Link:http://fssnip.net/4U
Posted:15 years ago
Author:
Tags: ref