fork(2) download
  1. import Data.Char
  2.  
  3. main = getLine >>= print . f
  4.  
  5. f ('(':s) = [(n `op` m,s'') | (n,o:s') <- f s, let Just op = lookup o [('+',(+)),('-',(-)),('*',(*)),('/',(/))], (m,')':s'') <- f s']
  6. f s = [(read $ takeWhile isDigit s,dropWhile isDigit s)]
Success #stdin #stdout 0s 6400KB
stdin
(((3*2)/(18/9))+(3*2))
stdout
[(9.0,"")]