4.3BSD/usr/contrib/icon/book/08/words2.icn

procedure words(k)
   local wchar, wordlist, line, i, j
   wchar := &lcase ++ &ucase ++ '\'-'
   wordlist := []
   while line := read() do {
      i := 1
      while j := upto(wchar,line,i) do {
         i := many(wchar,line,j)
         put(wordlist,line[i:j])
         if *wordlist = k then break break
         }
      }
   return wordlist
end