Curl言語

プログラミング言語Curl

curlは one of RIAs としてしかほとんど知られていませんが、純粋にプログラミング言語としてもcurlは大変面白いです。このブログのタイトルもそうした思いからついています。 kwatchの日記というブログで、珍しくプログラミング言語としてcurlが取り上げら…

Curlプラットフォームの7つのナイスなこと

Developer Communityのブログのmgordonによるポストの翻訳です。Developer Community Blog: Seven nice Things about the Curl Platform What makes Curl such a great programming platform? Here are seven things. Curlはプログラミングプラットフォーム…

def構文でよりlightweightになるプログラミング

今回は6.0で追加された def 構文を紹介します。 6.0の数ある新機能の中では地味な部類に入るかもしれませんが、プログラマ的(個人的)には最も注目に値する新仕様です。 defは定数を宣言するときに使います。 従来でも定数は let constant で宣言することが…

Curlのスコープ

404 Blog Not Found : LLいろいろ、スコープいろいろ ここでいきなり問題。以下のコードは何をalertするでしょうか? (function(){ var i = -1; for(var i = 0; i < 10; i++){ /* whatever */ } alert(i); })() これが-1でないのは、Perl Mongerにはびっくり…

Javaプログラマのための5つのCurl基本構文

今回はCurlプログラムの基本的な構文のうち、Javaと比べて比較的特徴的なシンタックスの構文を5つ紹介します。JavaプログラマでこれからCurlを覚えようという方は、まずこれを読んでからCurlの学習を始めてください! 1. Hello, world! いきなり最初に構文じ…

Curlが好きなわけ

前回紹介したCurl Blogのエントリをひとつ紹介したいと思います。 Curl Blog - Why I Like Curl Christopher Barberという、Curlの主にコンパイラ部分を担当している開発者兼アーキテクトによるポストで、プログラマにとってのCurlの特徴について述べられて…

マクロはファーストクラスオブジェクト

Curlの掲示板に回答した内容をこっちにもコピペ。まず質問の内容は、 ・unsetは昔から{unset ***}と書かなければ正しく動作しないのか ・なぜ {}なしでエラーにならないのか というもので、 unset a.enabled?というように、{}をつけなくてもコンパイルエラー…

キーワード引数

有名どころのブログでパラメータのプロパティ渡しというテクニックが紹介されてました。 Life is beautiful‐「パラメーターのプロパティ渡し」でプログラムを読みやすくする、というアイデアはどうだろう var f:Fish = new Fish(2, 180, 20, 20, 16, 40); C+…

マクロは強力なsyntax拡張機能

他の多くのプログラミング言語と同様、curlでもコードをモジュール化して再利用するためにクラスやプロシージャを使うことができます。curlにはもうひとつ、マクロと呼ばれるコードの再利用手段があります。例えば、イベントハンドラを記述するときに使う on…

オーバーロードはできません?(5)〜残余引数〜

残余引数を使うと、プロシージャやメソッドにおいて任意の数の引数を受け取ることができるようになります。 例えば、以下のように引数に任意の数のdouble値を受け取ってその合計を返すプロシージャを定義できます。 {define-proc {sum ...:double}:double le…

オーバーロードはできません?(4)〜any型+type-switch〜

今回はany型とtype-switchマクロを使用して、引数の型に応じて異なる処理を行わせる方法を紹介します。 any型とは、任意のデータ型を保持する変数に指定するデータ型です。any型として指定された変数*1には、クラス型だけでなくプリミティブ型、プロシージャ…

オーバーロードはできません?(3)〜暗黙の型変換〜

popup-messageとゆうプロシージャがあります。手軽にポップアップを表示できるため、デバッグなどに活用したりとご存知の方も多いことでしょう。今更説明の必要もないプロシージャだと思われますが、敢えてその使い方を見ていこうと思います。 以下のような…

オーバーロードはできません?(2)〜キーワード引数〜

オーバーロードを代替するcurlの機能紹介の第一回目はキーワード引数です。キーワード引数とは、引数の名前と値のペアを指定して任意の順番で渡すことのできる仕組みです。そして、その引数は省略でき、省略された場合は決められた初期値が用いられます。 以…

オーバーロードはできません?(1)

curlではメソッドやプロシージャのオーバーロードを許していません。 例えば {define-class Foo {method {do i:int}:void ... } {method {do s:String}:void ... } {method {do i:int, s:String}:void ... } }のように同じクラス(もしくはサブクラス)に引…