# K :: alpha beta -> alpha
proc K {x y} {
return $x
}
# iota :: num -> [num]
proc iota {n} {
set I {}
set i 0
while {$i<$n} {
lappend I "$i"
incr i
}
return $I
}
V.3 / 2
# incrlist :: [num] -> [num]
proc incrlist {L} {
set k [list]
set i 0
while {$i<[llength $L]} {
lappend k [ expr [lindex $L $i]+1 ]
incr i
}
return $k
}
or
# incrlist :: [num] -> [num]
proc inclist {L} {
set k {}
foreach i ${L} {
lappend k [expr $i+1]
}
return $k
}
V.3/ 3
# strlenlist :: [str] -> [num]
proc strlenlist {L} {
set k {}
foreach i ${L} {
lappend k [string length $i]
}
return $k
}
proc sumlist {mylist} {
set result 0
foreach element $mylist {
set result [expr $result + $element]
}
return $result
}
proc multlist {mylist} {
set result 1
foreach element $mylist {
set result [expr $result * $element]
}
return $result
}
proc catlist {L} {
return [join $L ""]
}