Annotation of 43BSD/contrib/icon/src/lib/pdco.icn, revision 1.1

1.1     ! root        1: #      PDCO(2)
        !             2: #
        !             3: #      Programmer-defined control operations
        !             4: #
        !             5: #      Ralph E. Griswold and Michael Novak
        !             6: #
        !             7: #      Last modified 8/11/84
        !             8: #
        !             9: 
        !            10: procedure Alt(a)
        !            11:    local x
        !            12:    while x := @a[1] do suspend x
        !            13:    while x := @a[2] do suspend x
        !            14: end
        !            15: 
        !            16: procedure Colseq(a)
        !            17:    suspend |@!a
        !            18: end
        !            19: 
        !            20: procedure Comseq(a)
        !            21:    local x1, x2
        !            22:    while x1 := @a[1] do
        !            23:       (x1 === @a[2]) | fail
        !            24:    if @a[2] then fail else return *a[1]
        !            25: end
        !            26: 
        !            27: procedure Cond(a)
        !            28:    local i, x
        !            29:    every i := 1 to *a do
        !            30:       if x := @a[i] then {
        !            31:          suspend x
        !            32:          suspend |@a[i]
        !            33:          fail
        !            34:          }
        !            35: end
        !            36: 
        !            37: procedure Every(a)
        !            38:    while @a[1] do @^a[2]
        !            39: end
        !            40: 
        !            41: procedure Galt(a)
        !            42:    local e
        !            43:    every e := !a do suspend |@e
        !            44: end
        !            45: 
        !            46: procedure Lcond(a)
        !            47:    local i
        !            48:    every i := 1 to *a by 2 do
        !            49:       if @a[i] then {
        !            50:          suspend |@a[i + 1]
        !            51:          fail
        !            52:          }
        !            53: end
        !            54: 
        !            55: procedure Limit(a)
        !            56:    local i, x
        !            57:    while i := @a[2] do {
        !            58:       a[1] := ^a[1]
        !            59:       every 1 to i do
        !            60:          if x := @a[1] then suspend x
        !            61:          else break
        !            62:       }
        !            63: end
        !            64: 
        !            65: procedure Ranseq(a)
        !            66:    local x
        !            67:    while x := @?a do suspend x
        !            68: end
        !            69: 
        !            70: procedure Repalt(a)
        !            71:    local x
        !            72:    repeat {
        !            73:       while x := @a[1] do suspend x
        !            74:       if *a[1] = 0 then fail
        !            75:       else a[1] := ^a[1]
        !            76:       }
        !            77: end
        !            78: 
        !            79: procedure Resume(a)
        !            80:    local i
        !            81:    while i := @a[2] do {
        !            82:       a[1] := ^a[1]
        !            83:       every 1 to i do if @a[1] then @^a[3] else break
        !            84:       }
        !            85: end
        !            86: 
        !            87: procedure Select(a)
        !            88:    local i, j, x
        !            89:    j := 0
        !            90:    while i := @a[2] do {
        !            91:       while j < i do
        !            92:          if x := @a[1] then j +:= 1
        !            93:          else fail
        !            94:       if i = j then suspend x
        !            95:       else stop("selection sequence error")
        !            96:       }
        !            97: end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.