再帰の救世主!関数型プログラミングにおける「トランポリン」とは何か
A Trampoline
A Trampoline
トランポリンとは、関数型プログラミングにおいてスタックオーバーフローを回避するために使われる、非常に強力なテクニックです。再帰呼び出しをループに変換することで、メモリ消費を抑えつつ深い再帰処理を安全に実行できるようになります。大規模な計算や複雑なデータ構造を扱う際に、ぜひ活用したい手法です。
隠れたコストって、救急外来への通院費のことだな。
これ見てると、上で飛び跳ねてる子供たちを思い出すよ[0]。
[0]https://en.wikipedia.org/wiki/Trampoline (https://en.wikipedia.org/wiki/Trampoline)
子供がどうしても欲しいと言ったものは買ってやる、というリマインダー。
もしこれを真に受けてたら、毎日子供がその日「どうしても欲しい」と言ったものを買いに店を走り回ることになるぞ :)
あと、全てを「買う」義務なんてないってことも言っておきたい。多くの人の頭にこの考えが深く刷り込まれてるのは驚きだよ。無料だったり中古だったりで手に入るものはたくさんある。うちの子供たちの巨大なトランポリンもタダでもらったし。
子供の頃にバックヤードのトランポリンで遊んだら、近所中を巻き込む大捜索騒ぎになったことがある。友達と遊ぶのが楽しすぎて、門限を何時間も過ぎちゃったんだ。どこにいるか誰にも言わなかったことをすっかり忘れててさ。
幸い、母の心配レベルが整数オーバーフローしたおかげか、無事に戻っただけで嬉しそうにしてて怒られなかった。ただ、本物の恐怖から解放された時の母の顔は、どんな説教よりも効いたよ。それ以来、どこに行くか伝えるのを忘れることは二度となかったね。
トランポリン、恐るべし。
長男が5歳の時にトランポリンを買ったよ。おねだりされたわけじゃなくて、ただの勘だったんだけどね。Craigslistか何かで箱入りの新品を格安で見つけて、たぶん50ドルくらいだったかな。
本人はすごく気に入って、何年も経った今でも雨が降らない日は毎日使ってるよ。もう興味なんて失くす年齢だと思ってたのに。マットもスプリングも全部交換して使い続けてるんだ。
何が言いたいかって、子供が何を気に入るかなんて本当にわからないってこと。
子供の頃、家のトランポリンが大好きだった。ほぼ毎日飛んでたし、風呂上がりに乾かすためにも乗ってたな。
自分の子供たちにトランポリンを買ってやるのは大きな決断だったけど、彼らは一回乗ったきりで、今は無理やり使わせなきゃいけない状態だよ。
トランポリンがあった頃の数年間はヒヤヒヤしっぱなしだった。通りから丸見えだったから、誰かが勝手に飛び乗って首の骨を折るんじゃないかってね。実際、子供の友達が怪我をしたこともあるけど、幸い大事には至らなかった。あれは負債の塊だし、保険がカバーしてくれるのかも怪しいよ。
ここ10年、ほぼ毎日トランポリンで跳ねてるよ。
すごくリラックスできるし、PCの前で座ってる時よりもずっと深く考え事ができるんだ。
中学生の頃、トランポリンを持っていたけど、全年齢にとって最高に楽しいよね。遊びに来る大人もみんな使ってたし。ただ、大人になった今、自分の家に置くなんて絶対にありえない。負債の塊だからね。昔、親の保険会社が調査に来てトランポリンを見つけた瞬間、その場で契約を打ち切られたことがある。請求履歴なんて一度もないのにだよ。法的には「魅力的な迷惑施設(attractive nuisance)」とみなされるから、誰かが庭に不法侵入してトランポリンで首を折ったら、法的責任はこっちに来るんだ。
まあ、うちの場合は親が極端に無責任な人間だったから持てただけだけどね。(他の面でもね)