Range expansion: Difference between revisions

m
→‎{{header|Python}}: Some light pruning in the functional version
(→‎Haskell – With a parser: Added FlexibleContents to enable parsing, applied hlint, hindent)
m (→‎{{header|Python}}: Some light pruning in the functional version)
Line 2,891:
return (
foldl(lambda a: lambda x: (
(lambda tpl=breakOn('-')(tail(x)[1:]): (
append(a) + (
(lambda r=tpl[1]: (
(lambda r=snd [int(tplx):] (if not r
[int(x)] if null(r)
else enumFromTo
(int(head(x)[0] + fst(tpl)[0]))
(int(tail(r)[1:]))
))()
)
Line 2,904 ⟶ 2,903:
))
([])
(splitOns.split(',')(s))
)
 
 
# GENERIC FUNCTIONS ---------------------------------------
 
 
# append :: [a] -> [a] -> [a]
def append(xs):
return lambda ys: xs + ys
 
 
# breakOn :: String -> String -> (String, String)
Line 2,936 ⟶ 2,929:
reduce(uncurry(f), xs, a)
)
 
 
# fst :: (a, b) -> a
def fst(tpl):
return tpl[0]
 
 
# head :: [a] -> a
def head(xs):
return xs[0]
 
 
# null :: [a] -> Bool
def null(xs):
return 1 > len(xs)
 
 
# snd :: (a, b) -> b
def snd(tpl):
return tpl[1]
 
 
# splitOn :: String -> String -> [String]
def splitOn(pat):
return lambda s: s.split(pat)
 
 
# tail :: [a] -> [a]
def tail(xs):
return xs[1:]
 
 
9,659

edits