Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2008-05-06

DylanでL-99 (P05 シーケンスを反転させる )

| 20:23 | DylanでL-99 (P05 シーケンスを反転させる ) - わだばLisperになる を含むブックマーク はてなブックマーク - DylanでL-99 (P05 シーケンスを反転させる ) - わだばLisperになる

うーん、入力のクラスと同じクラスで出力させたいのだけれど、object-classでは上手く行かないので、selectで振り分け。

絶対変な書き方だと思うんだけれども…。

forは、CLのdoを強化したようなもので、loopの機能も取り入れていますが、基本的に構文はdoに良く似ています。

#(foo:, bar:, baz:).rev
//=> #(baz:, bar:, foo:)

#[foo:, bar:, baz:].rev
//=> #[baz:, bar:, foo:]

"foobarbaz".rev
//=> "zabraboof"

define generic rev 
    (sequence :: <sequence>)
 => (result :: <sequence>);

define method rev
    (sequence :: <sequence>)
 => (result :: <sequence>)
  let result = make(<deque>);
  for (elt in sequence)
    push(result, elt);
  finally 
    as(select (sequence by instance?)
         <list> => <list>;
         <string> => <string>;
         <vector> => <vector>;
       end select, result)
  end for
end method rev;

pfcでL-99 (P05 リストを反転させる)

| 12:49 | pfcでL-99 (P05 リストを反転させる) - わだばLisperになる を含むブックマーク はてなブックマーク - pfcでL-99 (P05 リストを反転させる) - わだばLisperになる

pfcでは、appendを++とも書けるようです。listがないので、[]で囲んでいます。

(def (rev lst)
  (if (null lst)
      ()
      (++ (rev (tl lst)) [(hd lst)])))

Lingr CL-JP 今日投稿されたネタと質問

| 09:08 | Lingr CL-JP 今日投稿されたネタと質問 - わだばLisperになる を含むブックマーク はてなブックマーク - Lingr CL-JP 今日投稿されたネタと質問 - わだばLisperになる

5/5

質問への回答

loop の collect で vector を返すってなさそう

話題

iterateは色々拡張できるらしい。

seriesも良いんじゃないか?→seriesの解説が欲しい。

SBCLで、ADVICE

関数にフックをかけたり外したりできるという機能の紹介。

via:viridian-project.de

総称関数の:before、:after、:aroundや、EMACSのdefadviceのようなもの。

総称関数以外の関数や、CLパッケージの関数もいじれるというところがメリットでは?

その他:

総称関数から特定のメソッド外すのも結構途方に暮れる

→結局fmakunboundしてしまうことが多いw

総称関数で+を書き換えると引数なしだと単位元という部分が崩れる。

引数なしの、総称関数の存在意義は?

MacOSX用のCL環境オールインワンパッケージの新バージョンリリース

No page found