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-13

pfcでL-99 (P06 リストが回文的かを判定)

| 23:41 | pfcでL-99 (P06 リストが回文的かを判定) - わだばLisperになる を含むブックマーク はてなブックマーク - pfcでL-99 (P06 リストが回文的かを判定) - わだばLisperになる

ううむ。もっと先の問題にならないとpfcならでは、というところが見えてこないのかもしれない…。

前回定義したrevを使用。

(palindrome? '(x a m a x))
;=> #t

(def (palindrome? lst)
  (= (rev lst) lst))

DylanでL-99 (P06 シーケンスが回文的かを判定)

| 22:00 | DylanでL-99 (P06 シーケンスが回文的かを判定) - わだばLisperになる を含むブックマーク はてなブックマーク - DylanでL-99 (P06 シーケンスが回文的かを判定) - わだばLisperになる

比較の=は、CLでいうequalみたいなもので、==だとeqになる様子。

doは、CLのmapc、Schemeのfor-each。

let lst = #(x:, a:, m:, a:, x:);
let str = "xamax";
let vec = #[x:, a:, m:, a:, x:, a:];

do (method (x) format-out("%= => %=\n", x, x.palindrome?) end,
    list(lst, str, vec));
//>>>
// #(#"x", #"a", #"m", #"a", #"x") => #t
// "xamax" => #t
// #[#"x", #"a", #"m", #"a", #"x", #"a"] => #f

// code
module: l99-06

define generic palindrome? 
    (sequence :: <sequence>)
 => (result :: <boolean>);

define method palindrome?
    (sequence :: <sequence>)
 => (result :: <boolean>)
  (sequence = sequence.reverse)
end method palindrome?;