Haskellほど、ハマってる人と興味がない人との温度差が激しいものはないと言えるでしょう。 はまっている人の中には、「Haskell の素晴らしさをもっと広く伝えなければ!」と言う使命感を抱いて、 ことあるごとに啓蒙活動に励もうとする“信者”が少なくありません。
その博愛の気持ちは尊いといえば尊いのですが、勧められる側がさほど Haskellに興味がない場合は、 どう対処していいのか困ります。今日も全国各地で、 Haskell信者の熱い勧誘を受けて、 勧められる側が苦笑を浮かべているという構図が繰り広げられていることでしょう。
Haskellに興味がない側のあなたが、 そういう災難にあったときはどう対処すればいいのか。 信者の勧誘に対する平和で適当なかわし方を考えてみましょう。
程度の差こそあれ、「Haskell」を熱く勧めたがる信者の皆さんは、 「Haskellによってもたらせる新たな可能性」を信じ、 その可能性を人より早く気づいていることに、ちょっぴり優越感を抱いていると言えるでしょう。 どうも熱が入りすぎている人の中には、Haskellに過大な望みを託して、 いまいち不本意な現状から社会を大変革してくれる救世主のように見ているように思えるケースもあります。
いや、あくまで極端な例を挙げているだけなので、「俺は違う!」とムキにならないでください。 もちろん、私の周囲のHaskell好きのみなさんに対して、 私がそういう目を向けているわけでもありません。
今後の人間関係を考慮した言い訳で話がそれましたが、 Haskellを熱く勧めてくる人にとって、 Haskellにハマっていることが誇りであることは確か。 何はさておき、そこを見逃さないようにしましょう。
例えば、最近Haskellにハマっている同僚に、 「お前も始めた方がいいよ」と熱心に勧められたとします。 素晴らしさを説かれても、いまいちピンと来ないからといって、
「うーん、よくわかんないなあ。全ての変数が参照透明であることを保証するために再代入できないなんて気持ち悪いと思うけど」
「ループ処理は再帰で書けるって言われても、リスト内包表記は実質ループでしょ。結局ループは必要なんだよ。」
などと、偉大なる「Haskell様」の成果を否定する言い方を否定するのは危険すぎます。
ムキになってさらに熱く語ってくるぐらいならまだしも、「ハァ~」と深いため息をつきながら、 救いがたい愚か者を見るような目を向けてくるかもしれません。
まあ、分かり合えなくてもべつにいいといえばいいんですけど、
お互い、相手に悪い感情を抱くきっかけになるのは避けたいところです。
向こうだって、たまたまHaskellと衝撃的な出会いをして
頭がおかしくなったテンションが上がっているだけかもしれず、
けっして悪気があるわけじゃないし、人間として致命的な何かを失ってしまっているとまでは言い切れません。
一生懸命にHaskellの魅力を語ってくれたら、たとえピンと来なくても、
「なるほど、徹底して遅延評価を使うというのも、ユニークな考え方だね」
と、その教義に衝撃を受けたかのような反応をしておくのが、 大人の包容力でありそれなりに満足させるマナーです。
そういうふうに言えば喜ぶのはわかっていても、まるでその相手までホメるみたいで抵抗がある場合は、質問に逃げましょう。
「Scala とかとはどう違うの?」
と、ライバルの名前を持ち出してきて、Haskellの優位性をさらに語らせるもよし、
「最終的には全部ポイントフリースタイルで書かなきゃいけないんでしょ?」
そんな歪んだ先入観丸出しの誤解をわざとぶつけて、ひとしきり説明させるもよし。
いずれにせよ、どうでもいいと思っている気持ちを覆い隠したまま、 相手にそれなりの満足を覚えてもらうことができます。
まったくHaskellに興味がないわけではなく、 前にちょっと試しに触らせてもらったけど、意義がよくわからなくて困ってしまうケースも、 けっこう多そうです。そういう状態にあるあなたに、ハマっている同僚が例によって軽い口調で、
「状態を持つようなものは要するにモナドにしちゃえばいいですから簡単ですよ」(そもそもモナドが理解できてない自分。)「プークスクス。おっと、失礼。ちょ~~っとだけ難しかったですかねぇ?」
とHaskell教、じゃなかった、革新的な世界(自称) における定番の「そんなことも即座に理解できないの?」的フレーズを発してきたとします。 「ええ、普段接しているものとはかなり異なるものなので……」 と適当に納得したふりをして怒りを抑えるのはいいとして、つい勢いで、
「遅延評価(笑)を徹底した純粋関数型言語(笑)で圏論(笑)によって数学的にしっかりとした基礎付けられた(笑)言語はオレには何の迷いもなく(笑)使うことはできないようですね(笑)まあオレはギーク(笑)でイノベーティブ(笑)な人間じゃないですし^^」
などと全力で冷やかしてしまわないように気をつけましょう。 ハマっている人は、誇らしさの裏側に、多くは無自覚にですけど、
「C++erとしてやっていく自信がなくてHaskellにすがっているように見えるんじゃないか」
「複雑化しつつあるJavaプログラミングについていけない自分をHaskellerアピールで紛らわそうとしているように見えるんじゃないか」
といった不安を抱えています。何気ない皮肉が引き金になって、 心の奥の地雷を踏んでしまいかねません。 そこまでややこしい話じゃなくても、ハマりっぷりを感心する台詞の裏側に、
「デスマーチ進行なのに余裕ありますね」
「参照透明性が保証されていればこんなバグはとか理屈こねてないで、お前由来のエンバグをなくせよ」
と言う本音の気配を勝手に察知してしまいがち。なんせ日頃から他人の心に土足で踏み込んでいるだけに、 相手の心の動きに対してもきっと敏感です。 仮にカケラも思ってなかったとしても(カケラも思ってないケースは稀ですが)、相手はそう受け取るでしょう。
ハマりっぷりに対しては、てきとうに、
「オレも RWH 読もうかなあ」
とうらやましがっておくのが無難であり、相手に対する大人のやさしさ。単なるおためごかしではなく、 そのセリフを聞いたときの相手の満足そうな表情を見ることで、大人としての深い喜びも味わえるでしょう。
仮に、Haskellの話題をきっかけに相手との距離を縮めたいなら、 その場の口先だけでなく、次に顔を合わせたときに、
「あれから、Project Euler の問題を Haskellで50個ぐらい解いてみたよ」
と具体的な実績を話せばバッチリです。
熱く勧めてきた相手が、上司だったり仲良くなりたい異性だったりした場合は、 とりあえず勧められたとおりに触ってみて、Haskellの魔力に魅せられたフリをしましょう。
「やってみると面白いですねー。勧めてもらってよかったです」
とまでリップサービスしておけば、さらに完璧。相手は信者ですので、絶賛なら少々の違和感は気にしないでしょう。
具体的な対処法を書いてきましたが、こっちは所詮一個人。 Haskellが彼らの理想通りに普及しないのはHaskellが悪いのではなく、 わかってない異教徒や足を引っ張る奴らの問題だということにして批判の矛先を変えておきましょう。
この記事は、 「ツイッター信者」にその素晴らしさを熱く語られたときの平和で適当なかわし方 とその記事についたはてブコメントの 「汎用性たけえ」、改変ネタの 「Apple信者」にその素晴らしさを熱く語られたときの平和で適当なかわし方辺りの記事を見ながら 「信者に熱く語られたときの平和で適当なかわし方」ジェネレータ を使って生成させていただきましたので、真には受けないように。 そんなことを踏まえつつ、それぞれのニーズや好みに応じてまた主語を変えてお楽しみいただければよろしいかと思います。
「Haskell信者」が抱える誇らしさと不安――その両方を見逃すべからず