Guy L. Steele Jr. believes that it should not be the programmer’s job to think about parallelism, but languages should provide ways to transparently run tasks in parallel. This requires a new approach in building languages supporting algorithms built on independence and build-and-conquer principles rather than on linear decomposition of problems.
Guy Steele is a Sun Fellow for Sun Microsystems Laboratories, working on the Programming Language Research project. He received his A.B. in applied mathematics from Harvard College (1975), and his S.M. and Ph.D. in computer science and artificial intelligence from MIT (1977 and 1980). Prior to joining Sun Microsystems, he was an assistant professor of computer science at Carnegie-Mellon University
Strange Loop is a developer-run software conference. Innovation, creativity, and the future happen in the magical nexus "between" established areas. Strange Loop eagerly promotes a mix of languages and technologies in this nexus, bringing together the worlds of bleeding edge technology, enterprise systems, and academic research. Of particular interest are new directions in data storage, alternative languages, concurrent and distributed systems, front-end web, semantic web, and mobile apps.
Thanks for posting.
data WordState = Chunk String
| Segment String [String] String
maybeWord :: String -> [String]
maybeWord "" = 
maybeWord s = [s]
(⊕) :: WordState -> WordState -> WordState
Chunk s ⊕ Chunk s' = Chunk (s ++ s')
Chunk s ⊕ Segment l as r = Segment (s ++ l) as r
Segment l as r ⊕ Chunk s = Segment l as (r ++ s)
Segment l as r ⊕ Segment l' as' r' = Segment l (as ++ maybeWord (r ++ l') ++ as') r'
processChar :: Char -> WordState
processChar ' ' = Segment ""  ""
processChar c = Chunk [c]
words s = case g of
Chunk s -> maybeWord s
Segment l as r -> maybeWord l ++ as ++ maybeWord r
where g = foldr1 (⊕) (map processChar s)
main = print (Main.words "Here is a sesquipedalian string of words")