[#34991] a = 4 ; p((a < 3) or (a > 5)) — Take_tk <ggb03124@...>

 次のものがエラーになるのは何故なんでしょうか?

12 messages 2002/05/06

[#35028] win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp>

小西 弘将です。

20 messages 2002/05/09
[#35034] Re: win32.c 中の my* 関数について — nobu.nakada@... 2002/05/10

なかだです。

[#35042] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/11

 小西 弘将です。

[#35044] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/11

 小西 弘将です。

[#35045] Re: win32.c 中の my* 関数について — "U.Nakamura" <usa@...> 2002/05/11

こんにちは、なかむら(う)です。

[#35046] Re: win32.c 中の my* 関数について — nobu.nakada@... 2002/05/11

なかだです。

[#35047] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/11

 小西 弘将です。

[#35048] Re: win32.c 中の my* 関数について — nobu.nakada@... 2002/05/11

なかだです。

[#35062] Re: win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp> 2002/05/12

 小西 弘将です。

[#35052] ruby_lib/html/ — Wakou Aoyama <wakou@...>

青山です。

32 messages 2002/05/11
[#35057] Re: ruby_lib/html/ — TN <nyonyoru@...> 2002/05/12

 にょにょると申します。(ここハンドル投稿ダメなのでしょうか?ダメなら本

[#35063] Re: ruby_lib/html/ — Wakou Aoyama <wakou@...> 2002/05/12

青山です。

[#35074] Re: ruby_lib/html/ — nnr <nyonyoru@...> 2002/05/12

 にょにょるです。オンラインではずっとこれを使っているので、これでいきま

[#35054] 「 Ruby/GTK プログラミング入門」 — Noritsugu Nakamura <nnakamur@...>

14 messages 2002/05/12

[#35102] ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...>

はじめまして、須藤です。

57 messages 2002/05/13
[#35115] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/14

なひです。

[#35125] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...> 2002/05/14

須藤です。

[#35130] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/15

なひです。

[#35140] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...> 2002/05/15

須藤です。

[#35141] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — nobu.nakada@... 2002/05/15

なかだです。

[#35157] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — TAKAHASHI Masayoshi <maki@...> 2002/05/15

高橋征義です。

[#35159] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/16

なひです。

[#35160] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/16

なひです。

[#35162] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — matz@... (Yukihiro Matsumoto) 2002/05/16

まつもと ゆきひろです

[#35186] Re: ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/05/17

なひです。

[#35192] Re: ANNOUNCE: REXML のドキュメント — siena@... (Siena.) 2002/05/17

Siena. です。

[#35253] ((1.2)..(3.4)).to_a — Take_tk <ggb03124@...>

1.2..3.4 を配列にすると、その範囲に属しない整数「1」が含まれるという点に

29 messages 2002/05/25
[#35257] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto) 2002/05/25

まつもと ゆきひろです

[#35265] Re: ((1.2)..(3.4)).to_a — Take_tk <ggb03124@...> 2002/05/27

たけ(tk)です。

[#35272] Re: ((1.2)..(3.4)).to_a — siena@... (Siena.) 2002/05/27

Siena. です。

[#35279] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto) 2002/05/28

まつもと ゆきひろです

[ruby-list:35106] Re: かりー化

From: Masahiro Sakai (酒井政裕) <zvm01052@...>
Date: 2002-05-13 18:51:33 UTC
List: ruby-list #35106
酒井です。

From: Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp>
Subject: [ruby-list:35092] Re: かりー化
Date: Mon, 13 May 2002 19:53:25 +0900

> 情報満載なので、いつも「日々の流転」楽しみにしております。_o_

うおぉ、そんな風に思われていたとは光栄です。

> 酒井さんの「メソッドのカリー化」のコードは載せないんですか?

では載せましょう。

ただ、こっちは
・ブロックの事を考慮してない
・UnboundMethodを使ってるので継承と相性が悪そうだ
といった理由で自分ではイマイチだと思っています。

require 'thread'

class Module
  CURRYING_METHOD_TABLE_       = Array.new
  CURRYING_METHOD_TABLE_MUTEX_ = Mutex.new

  def currying(name, arity=nil)
    m = instance_method(name)
    
    if m.arity == 0
      return
    elsif m.arity > 0
      arity = m.arity
    else
      arity ||= (-m.arity)-1
    end

    tbl_idx = nil
    CURRYING_METHOD_TABLE_MUTEX_.synchronize{
      tbl_idx = CURRYING_METHOD_TABLE_.size
      CURRYING_METHOD_TABLE_ << m
    }

    module_eval %Q[
      def #{name.to_s}(*args1)
        proc = lambda{|*args|
          if args.size >= #{arity}
            Module::CURRYING_METHOD_TABLE_[#{tbl_idx}].bind(self).call(*args)
          else
            lambda{|*a| proc.call(*(args + a))}
          end
        }
        proc.call(*args1)
      end
    ]
  end
end

class <<self
  define_method(:currying, method(:currying).to_proc)
end

if __FILE__ == $0
  def hello(a, out)
    out.printf("Hello, %s!\n", a)
  end
  currying :hello

  hello_ruby = hello("Ruby")
  hello_ruby[STDOUT] #=> Hello, Ruby!
end 

> そういえば「カリー化」の定義を言わないと。

すっかり忘れていました。(^^;;

僕は正確な定義は良く知らないのですが、原さんが下に書いているように
X×Y→Z のような多引数の関数を X→(Y→Z) というような
_関数を返り値とする_1引数の関数に変換する事をカリー化と呼ぶらしいです。

Rubyで使う場合には、引数の数を1個に制限するよりは
一度に可変個の引数を受け取れた方が嬉しいだろうという事で、
このようなコードにしてみました。

> 多変数の関数、例えば f(x, y, z) に、対して
> 
>     F(x)(y)(z) = f(x, y, z)
> 
> を満たすような、関数の関数の、、、関数 F を作る事をカリー化って
> いうんですよね。ここではその Proc バージョンであると。

-- さかい

In This Thread

Prev Next