HaskellにもTurtleグラフィックスがあります。
ただどうしてもインストールできませんでした。
そこでHaskellでPythonのコードを出力します。
再帰深度1の場合、次のようなコードを生成します。
$ runghc t.hs 1 > a
$ cat a
from turtle import *
t=Turtle()
t.penup()
t.shape('turtle')
t.setpos((-200.0,-200.0))
t.pendown()
t.fillcolor('black')
t.begin_fill()
t.setpos((-200.0,-200.0))
t.setpos((200.0,-200.0))
t.setpos((0.0,146.41016151377534))
t.setpos((-200.0,-200.0))
t.end_fill()
t.penup()
t.fillcolor('white')
t.begin_fill()
t.setpos((0.0,-200.0))
t.setpos((100.0,-26.794919243112332))
t.setpos((-100.0,-26.794919243112332))
t.setpos((0.0,-200.0))
t.end_fill()
done()
pythonにパイプします。
$ cat a | python
直接Pythonにパイプしても可。
$ runghc t.hs 6 | python
再帰深度は5〜7が適当です。(深度を深くとってPythonの起動まで時間がかかる場合はコンパイルします)
6の場合の実行結果
カメの軌跡で描くこともできます。
コードはこちら
実行例の再帰深度は5。カメの動きはのろめ。
繰り返しの中に再帰が埋め込まれているので少し複雑なコードになっています。
ついでにコッホ曲線も。
またランダムな要素を取り入れると
のような画像が得られる。自然の海岸線に見えなくもない。(いくつか描画してみていかにもそれらしいものを選んでいます)
そのためのコードはこちら
複素数と平面図形に関する公式は
https://examist.jp/category/mathematics/complex-plane/
を参照しました。
ちなみに、マンデルブローの「The Misbehavior of Markets」に掲載されている画像はこちら。
スクラッチでも再帰は書けるらしい。
「こういうプログラムを再帰って言うんだ。
すこしむつかしいけど、おぼえておこう。」
シェルピンスキーのギャスケットをスクラッチで描くページはいくつかありますが、
最初に参照したページをあげておきます。
https://i-learn.jp/article/3302
こちらも参照下さい。http://hhg2the-haskell.blogspot.com/2017/10/blog-post_75.html