ruby while loop translated to haskell

后端 未结 2 1981
被撕碎了的回忆
被撕碎了的回忆 2021-01-20 18:42

I\'ve just started learning a bit of Haskell and functional programming, but I find it very difficult getting a hang of it :)

I am trying to translate a small piece

2条回答
  •  借酒劲吻你
    2021-01-20 19:15

    To add to shree.pat18's answer, maybe an exercise you could try is to translate the Haskell solution back into Ruby. It should be possible, because Ruby has ranges, Enumerator::Lazy and Enumerable#flat_map. The following rewritten Haskell solution should perhaps help:

    import Data.List (concatMap)
    
    results :: [(Integer, Integer)]
    results = concatMap (\x -> concatMap (\y -> test x y) [1..1000]) [1..1000]
        where test x y = if fac x == y*y then [(x,y)] else []
              fac n = product [1..n]
    

    Note that Haskell concatMap is more or less the same as Ruby Enumerable#flat_map.

提交回复
热议问题