これでいいのかな?

multiples n = multiples_r (n)
  where multiples_r(m) = m:multiples_r(m+n)

Hugsで確認

Main> take 10 (multiples 3)
[3,6,9,12,15,18,21,24,27,30]

--shiro


From: Shinya Hayakawa <tetryl / tokyoprogrammer.com>
Subject: [haskell-jp:110] 掛け算のリストを再帰で
Date: Fri, 04 Apr 2003 06:18:31 +0900

> こんにちは。早川です。
> 
> ある数について全ての自然数との積のリストを定義したいのですが
> 再帰を使って表現できなくて困っています。
> 
> 実際のリストは以下のように無限に続くものです。
> 
>   multiples n = n, n+n
>               = n, n+n, n+n+n
>               = n, n+n, n+n+n, n+n+n
>               = ...
> 
> 表現の仕方はいくらでもあると思いますが、
> これを再帰を使って、上記のように足し算のみで表現することは
> 可能でしょうか。
> -- そういう数式をたまたま見つけたもので..
> 
> ↓のようなイメージなのですが
> これはもちろんコンパイルエラーが出ます (^^;
>   multiples n = n:multiples (n+n)
> 
> 試行錯誤してみましたが
> 自分には Haskell のリストの壁を越えられませんでした..
> 
> --
> SH <hayakawa / edge.co.jp>
> Livin' on the EDGE Co., Ltd.
> 
> 
> --
> ML: haskell-jp / quickml.com
> 使い方: http://QuickML.com/

--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/