続・Curlは関数型?というか、Matzさんありがとうございました

この前のエントリにたいして、まさかまさかの展開。

まず、Curlが関数型かどうかだが、一昔前だと「関数」呼び出しがベースになっている言語はすべて関数型と呼ばれていた(Lispとか) ので、そういう観点からは関数型と呼べないこともないと思う。

しかし、現代で関数型といえば、副作用がない(少ない)、とか高階関数を基本にするとかのようなHaskellOCamlのような言語をさすと思うので、そういう意味ではCurlはあんまり関数型ではないと思う。

どうにもTclに近いんだけど、リストベースという点ではLispに近い。

http://www.rubyist.net/~matz/20080219.html#p03

朝、いつも通りにLivedoor Readerで色々な方のブログを流し読みしていたら、なぜかMatzにっきに自分のブログエントリのタイトルが。
普通に、ビクッて反応してしまいました。。。
「反応してもらえてうれしい」というより、ちょっと「しまった」感のほうが強かったのは、完全に油断していたからでしょうか。
無知をさらけだして飲み屋でボソッと言ったくらいのノリなのにお返事いただいてしまって、なんだか貴重な時間、お手をわずらわせたような申し訳ないようなそんな気分というのが正直なところ(^^;
何はともあれ、やっぱりインターネットは世界につながっているのだなぁというのを肌で感じました。
どうもありがとうございました。

えーと、「言語をDISる人」としての認知が広がってきたのでしょうか。本人としては「あらゆる言語ラブ」な人だと自任しているので、ただ単にけなすことをイメージさせる「DISる」というのはちょっと辛いのだけど。

この点に関しては本当に申し訳ないです。
普段からMatzにっきを拝見しておりますので、Matzさんの「言語ラブ」っぷりは承知しているつもりです。
過去のエントリも色々と拝見しましたが、Curlに対してけっこう熱いエールを送っていらっしゃったので、今勉強していることに対するモチベーションにもなりました。少しでも流行るように頑張ろーっと。


先のエントリにも書きましたが僕は関数型言語というのは知りません。
なのになんで「関数型?」と思ったのかというと、

  • Lisp = 関数型言語と思っている
  • Lispは文が括弧()でくくられている
    • Curlはカーリーブラケット{}でくくられている(これがCurlの由来)のでLispっぽい
  • 関数型 = 頭に関数名がきてそのあとに引数みたいな感じでプログラムを書く感じ
  • 関数が小文字とハイフンでつないで書くのでLispっぽい

ちなみに、LispっていってもEmacsのをダラーっと眺めたことがあるくらい。(Lispは色々と方言がある)
大学の時の授業でLispの授業があったけど単位が足りていたので結局取るのを止めてしまったのはいまだにちょっと後悔。
というわけで文法なんかは分かりませんが、なんとなくぱっと見、「Lispっぽい」と思ったわけです。
で、関数型言語だと、代入も関数でやっちゃうイメージなので"="とかは出てこないようなイメージなわけだけど、Curl

  ||変数宣言
  let num:Integer = 10
  ||代入
  set num = 5

てな感じに書くので、関数型っぽくないなぁーと思ったわけです。


で、実際のところはMatzさんのコメントの通りです。
勉強になりました。

ちなみにCurlの文法や何かに関しては、id:giuseppeさんのところが詳しいようです。
本なんかも数冊出ているのでもし気になった方は触ってみてはいかがでしょうか。

かんたんIDEではじめるCurl

かんたんIDEではじめるCurl