This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun sum_triple_bad_style triple = | |
case triple of (x,y,z) => x + y + z | |
fun sum_triple_better_style triple = | |
let val (x,y,z) = triple | |
in | |
x + y + z | |
end | |
fun sum_triple_best_style (x,y,z) = x + y + z | |
(* | |
assume a record looks like | |
{ first="Robby", last="Pelssers"} | |
*) | |
fun full_name_bad_style r = | |
case r of {first=f, last=l} => f ^ " " ^ l | |
fun full_name_better_style r = | |
let val {first=f, last=l} = r | |
in | |
f ^ " " ^ l | |
end | |
fun full_name_best_style {first=f, last=l} = f ^ " " ^ l | |
val sum1 = sum_triple_bad_style (1,2,3) | |
val sum2 = sum_triple_better_style (1,2,3) | |
val sum3 = sum_triple_best_style (1,2,3) | |
val fullname1 = full_name_bad_style({first="Robby", last="Pelssers"}) | |
val fullname2 = full_name_better_style({first="Robby", last="Pelssers"}) | |
val fullname3 = full_name_best_style({first="Robby", last="Pelssers"}) | |
(* output of program | |
- use "patterns.sml"; | |
[opening patterns.sml] | |
val sum_triple_bad_style = fn : int * int * int -> int | |
val sum_triple_better_style = fn : int * int * int -> int | |
val sum_triple_best_style = fn : int * int * int -> int | |
val full_name_bad_style = fn : {first:string, last:string} -> string | |
val full_name_better_style = fn : {first:string, last:string} -> string | |
val full_name_best_style = fn : {first:string, last:string} -> string | |
val sum1 = 6 : int | |
val sum2 = 6 : int | |
val sum3 = 6 : int | |
val fullname1 = "Robby Pelssers" : string | |
val fullname2 = "Robby Pelssers" : string | |
val fullname3 = "Robby Pelssers" : string | |
val it = () : unit | |
*) |
No comments:
Post a Comment