








Perl
Practical Extraction and Report Language の略。UNIX 上で C プログラムを組むまでもないがシェルにやらせるほど単純ではない処理を手軽にこなすために開発された処理系。--sumim
Perlを特徴付けているのは、自然言語学者でもある創造者、Larry Wallの精神だと思う。
Perlにはコンテキストという考え方があり、同じ関数がそのコンテキスト(文脈)で違った振る舞いを示す。
また、一つの処理に対し、いろいろな表現を用いた書き方ができるし、慣れれば慣れる程、技巧を凝らした文章(プログラム)が書けるようになる感覚は、良い/悪いは別にしてもPerlならではのものだ。
sub { print sort @_ }->(4,2,1,3,5); 12345を印字
なんて書ける言語が他にあるのかな? 正直私はPerlから離れられそうもない。
現在、コミュニティによる書き直しという位置付けの元 Perl6の開発が続けられている。
言語をコミュニティに委ねるというのは、これまた壮大な実験であるが... --dseg
http://www.parrotcode.org/
> 他にあるのかな?
と振られたら書くしか。:-) --SHIMADA
Common Lisp
((lambda (a) (prin1 (sort a #'<))) '(4 2 1 3 5))
Ruby
proc{|a| p a.sort}[4,2,1,3,5]
じゃ、私も(笑)。--sumim
Smalltalk
#(4 2 1 3 5) sort
あ、そういうことじゃなくて?(^_^;) じゃ。
[ :a | Transcript show: a sort ] value: #(4 2 1 3 5)
なんだかな。
>>なんて書ける言語が他にあるのかな?
皆さん、どうもすみません...情けない。
サンプルコードは、無名関数でラムダ式そのものでした。
本当は正規表現のコードを書くつもりだったんですが、何故か上の文にしてしまいました。
数分の拾捨選択作業を経てかつ、上の文にしてしまったのは何かの因果...な訳ない --dseg
では、仕切りなおしで正規表現版を是非(笑)。--sumim
Perl的な文脈依存は、例えば
$foo = foo foo foo;
と書いた時、sub foo {}が定義されていない場合は3つのfooがそれぞれ
- 最初のfooがメソッド名(サブルーチン名)
- 次のfooがクラス名(パッケージ名)
- 最後のfooが文字列
を表し、sub foo {}が定義されてる場合は
$foo = foo(foo(foo()));
と等価だったりすることじゃなかったかな。また、
$foo = foo, foo foo;
$foo = foo foo, foo;
のように、カンマを入れる位置で意味が変わってきます。
他にも何かあった気がするけど忘れました。。。
--浅倉
このページを編集 (2096 bytes)
 |
以下の 5 ページから参照されています。 |
- Wiki 最終更新: 2004-12-28, 14:26:06 <p2149-f>
- YukiWiki 最終更新: 2002-08-15, 02:50:38 <tibook>
- Ruby 最終更新: 2004-05-26, 21:17:40 <fsiabcg>
- HashedWiki 最終更新: 2003-12-21, 02:18:30 <192>
- 苦労 最終更新: 2004-12-09, 11:18:19 <tibook>
This page has been visited 5248 times.