fork download
  1. import Data.Ratio
  2.  
  3. myEnumFromThen :: (Fractional a) => a -> a -> [a]
  4. myEnumFromThen n m = n `seq` m `seq` (n : myEnumFromThen m (m+m-n))
  5.  
  6. myEnumFromThenTo :: (Ord a, Fractional a) => a -> a -> a -> [a]
  7. myEnumFromThenTo e1 e2 e3
  8. = takeWhile predicate (myEnumFromThen e1 e2)
  9. where
  10. predicate | e2 >= e1 = (<= e3)
  11. | otherwise = (>= e3)
  12.  
  13. main = do
  14. print $ (myEnumFromThenTo 1.3 1.6 2.8 :: [Float])
  15. print $ (myEnumFromThenTo 1.3 1.6 2.8 :: [Ratio Int])
Success #stdin #stdout 0.01s 3684KB
stdin
Standard input is empty
stdout
[1.3,1.6,1.9000001,2.2000003,2.5000005]
[13%10,8%5,19%10,11%5,5%2,14%5]