-
Notifications
You must be signed in to change notification settings - Fork 1
6. maj
Ken Friis Larsen edited this page May 5, 2013
·
2 revisions
-
Lassign og Lshared, eks. på brug?
-
Fra Ken: Følgende er to eksempel funktioner der gerne skulle give anledning til
LsharedogLassign.Lsharedkommer i forbindelse med oversættelse af patterns, fx i funktionf.Lassignbliver indført afBack.UNdeBruijn, fx (håber jeg) i funktionenilen. Det vil sige, I skal håndtereLshared(i C ville det være vhagoto), mens at det er lidt mere uklart (for mig) om I behøver at håndtereLassign.
datatype t = A | B
fun f x =
case x of
(A,A,_,_,_,_,_,_,_,_) => 0
| (_,_,A,A,_,_,_,_,_,_) => 1
| (_,_,_,_,A,A,_,_,_,_) => 2
| (_,_,_,_,_,_,A,A,_,_) => 3
| (_,_,_,_,_,_,_,_,A,A) => 4
| (A,B,A,B,A,B,A,B,A,B) => ~1
fun ilen xs =
let val c = ref 0
val next = ref xs
in while not(null(!next)) do
( c := (!c)+1
; next := tl(!next)
)
; !c
end