[#35789] [Ruby 1.9 - Bug #407] (Open) String#<< — Shyouhei Urabe <redmine@...>

チケット #407 が報告されました。 (by Shyouhei Urabe)

13 messages 2008/08/06

[#35845] [Bug #437] test_strftime(TestTime) fails on Solaris — Shugo Maeda <redmine@...>

Bug #437: test_strftime(TestTime) fails on Solaris

24 messages 2008/08/13
[#35855] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — "Shugo Maeda" <shugo@...> 2008/08/15

前田です。

[#35856] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — SATOH Fumiyasu <fumiyas@...> 2008/08/15

さとうふみやす @ OSS テクノロジです。

[#35857] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — Yukihiro Matsumoto <matz@...> 2008/08/15

まつもと ゆきひろです

[#35870] Re: [Bug #437] test_strftime(TestTime) fails on Solaris — "Shugo Maeda" <shugo@...> 2008/08/18

前田です。

[#35863] Refactoring of enumerating prime numbers — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

20 messages 2008/08/16
[#35865] Re: Refactoring of enumerating prime numbers — keiju@... (keiju ISHITSUKA) 2008/08/17

けいじゅ@いしつかです.

[#35867] Re: Refactoring of enumerating prime numbers — "Yugui (Yuki Sonoda)" <yugui@...> 2008/08/17

Yuguiです。

[#35875] Re: Refactoring of enumerating prime numbers — keiju@... (keiju ISHITSUKA) 2008/08/19

けいじゅ@いしつかです.

[#35877] Re: Refactoring of enumerating prime numbers — Nobuyoshi Nakada <nobu@...> 2008/08/19

なかだです。

[#35882] Re: Refactoring of enumerating prime numbers — keiju@... (石塚圭樹) 2008/08/20

けいじゅ@いしつかです.

[#35904] [Feature:1.9] pack format 'm' based on RFC 4648 — "Yusuke ENDOH" <mame@...>

遠藤です。

14 messages 2008/08/21
[#36442] [Feature #471] pack format 'm' based on RFC 4648 — Yuki Sonoda <redmine@...> 2008/09/22

チケット #471 が更新されました。 (by Yuki Sonoda)

[#35906] %N for Time#strftime — "Shugo Maeda" <shugo@...>

前田です。

13 messages 2008/08/21

[#35986] 1.9と1.8で、delegateのインスタンスのクラス名の違う — Fujioka <fuj@...>

xibbarこと藤岡です。

17 messages 2008/08/26
[#35987] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — Yukihiro Matsumoto <matz@...> 2008/08/26

まつもと ゆきひろです

[#35991] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — keiju@... (石塚圭樹) 2008/08/26

けいじゅ@いしつかです.

[#35994] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — Fujioka <fuj@...> 2008/08/27

藤岡です。

[#35998] Re: 1.9と1.8で、delegateのインスタンスのクラス名の違う — keiju@... (石塚圭樹) 2008/08/27

けいじゅ@いしつかです.

[#36066] Numeric#scalar? — Tadayoshi Funaba <tadf@...>

1.9 の Numeric#scalar? について、適当でないのでは (real? などのほうがい

24 messages 2008/08/31
[#36069] Re: Numeric#scalar? — Shin-ichiro HARA <sinara@...> 2008/08/31

原です。

[#36104] Re: Numeric#scalar? — Tadayoshi Funaba <tadf@...> 2008/09/02

> やはり、scalar? はずれているんじゃないかな。real? の方がいい

[#36122] Re: Numeric#scalar? — Shin-ichiro HARA <sinara@...> 2008/09/03

原です。

[#36133] Re: Numeric#scalar? — Tadayoshi Funaba <tadf@...> 2008/09/03

> ここで、scalar? を疑問視する理由を復習すると、たとえば、「複

[#36173] Re: Numeric#scalar? — Tadayoshi Funaba <tadf@...> 2008/09/05

1.9.1 までに時間がないので scalar? だけ何とかしたいと思っていましたが、

[#36183] Re: Numeric#scalar? — "Shugo Maeda" <shugo@...> 2008/09/06

前田です。

[#36186] Re: Numeric#scalar? — Shin-ichiro HARA <sinara@...> 2008/09/06

原です。

[ruby-dev:35865] Re: Refactoring of enumerating prime numbers

From: keiju@... (keiju ISHITSUKA)
Date: 2008-08-17 09:20:18 UTC
List: ruby-dev #35865
けいじゅ@いしつかです.

In [ruby-dev :35863 ] the message: "[ruby-dev:35863] Refactoring of
enumerating prime numbers ", on Aug/16 14:11(JST) "Yugui (Yuki
Sonoda)" writes:

>Yuguiです。

>mathn.rbに収録されているPrimeクラスの使い勝手がいまいち良くないので改善
>を提案します。直したいのは3点です。
>
>1. mathn.rbに入っている
>2. インスタンスを生成する必要がある
>3. そもそも独自のクラスが必要か?

インターフェースの側面, 機能の側面, 実現の側面から見てみたいと思います.


まず, インターフェース上の側面から.

>== mathn.rbに入っている
>素数列挙は整数に閉じた計算でも必要になるものなので、mathn.rbがもたらす
>  int / int => rational
>は嬉しくないことがあります。

分からないことはないです.

ただ, そもそも, Prime は 元々, 素因数分解のために mathn.rb に入ってい
るもので, mathn.rb に同梱されているからこそ標準添付になれたもので, そ
れ単独で標準添付になれたかどうか? たぶん, なれなかったでしょう.

>ですから、素数を列挙する機能はmathn.rbに含まれているべきではありません。
>添付のパッチでは仮にlib/math/prime.rbというファイルに追い出してみまし
>た。

そのあたりが, lib/prime.rb でなく lib/math/prime.rb という遠慮になって
いるような気がします.

いまさら, 分けたら標準添付からはずせともいわれないと思いますので, 場所
(ファイル名)はともかく分けてもよいと思います.


>== インスタンスを生成する
>素数列挙機能は現在は次のようにして使う必要があります。
> Prime.new.each do |prime|
>   # do something
> end
>要するに、Primeオブジェクトは素数列挙に対する外部イテレータです。
>これは少し奇妙に思えます。

全然奇妙でもないと思いますが? 概念的には, Primeインスタンスが素数の集
合を表していると考えているからです. その素数集合から数え上げていると考
えているのでこのようなインターフェースになっています.

>次のように書きたいです。
> Prime.each do |prime|
>   # do something
> end

それは, インターフェース上の問題で, 利便性からそいうものがあってもよい
気がしますが.

for prime in Prime
  # ...
end

って書くとおかしい気がするので, あくまでもそのようなインターフェイスも
用意するのがよいと思います.


>== そもそも独自のクラスが必要か
>こうなると、Primeという独自のクラスが必要かどうかが疑問になってきます。
> Integer.each_prime do |prime|
>   # do something
> end
>
>でよいのではないでしょうか。Primeという別個のクラスが用意されていたのは
>外部イテレータを提供するためにインスタンスを生成する必要があったのだと思
>われます。Enumeratorが組み込みになった今、素数列挙機能はIntegerクラスに
>付加するのが自然だと思います。

> Integer.each_prime do |prime|

がインターフェイス上欲しいってのを否定するつもりはないです. 積極的に肯
定する来もないですが.

次に, 機能的側面から.

Enumeratorと外部イテレータとしてのPrimeインスタンスですが, Enumerator
はスレッドの境界を越えられないという制約がありますので, そのような制約
のないPrimeからわざわざダウグレードする必要はないです.

次に, 実装的側面から, Yuguiさんの実装はでは, Integerのクラス変数として

  @@primes
  @@next_to_check
  @@ulticheck_index
  @@ulticheck_next_squared

とうが, 導入されていますが, これはとても許せないですね. Integerのクラ
ス変数としてはふさわしくないと思います.

> 今はEnumerable::Enumeratorがあるのですから、外部イテレータ生成のためだけ
> に奇妙な振る舞いをさせる必要はありません。また、Rubyライブラリとしては内
> 部イテレータをまず提供するのがより自然ではないでしょうか。

とありますが,

現行のPrimeから内部イテレータを実現する方法とYuguiさんの内部イテレータ
からEnumertorを利用する方法とどちらが自然かといえば, 外部イテレータを
実現するためにFiberを用いている方がよっぽど不自然だと思います. 牛刀っ
て感じがします. さらに, 上記で述べたように機能的に劣るものに置き換える
理由はないと考えます.

私の結論としては:

* mathn.rb から 分離独立させる => 賛成
* Prime.each の導入 => 賛成

* Integer.each_prime の導入 => 必要性はあまり感じない

* 実装に関して => 現状のままでよい.

です.


__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---

In This Thread