Skip to content
Ken Friis Larsen edited this page May 5, 2013 · 2 revisions

Dagsorden

  • Lassign og Lshared, eks. på brug?

  • Fra Ken: Følgende er to eksempel funktioner der gerne skulle give anledning til Lshared og Lassign. Lshared kommer i forbindelse med oversættelse af patterns, fx i funktion f. Lassign bliver indført af Back.UNdeBruijn, fx (håber jeg) i funktionen ilen. Det vil sige, I skal håndtere Lshared (i C ville det være vha goto), mens at det er lidt mere uklart (for mig) om I behøver at håndtere Lassign.

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

Referat

Clone this wiki locally