[#4834] Fwd: Re: Whats so different about a Hash? — Andrew Walrond <andrew@...>
>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:
On Thursday 05 May 2005 13:48, ts wrote:
>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:
On Thursday 05 May 2005 13:57, ts wrote:
[#4844] Getting rid of Object#equal?()? — =?ISO-8859-15?Q?Florian_Gro=DF?= <florgro@...>
Moin.
[#4848] No way to change socket timeout on opened URI — noreply@...
Bugs item #1878, was opened at 2005-05-05 17:55
[#4855] Method hooks in singleton classes — Pit Capitain <pit@...>
Hello Ruby-maintainers,
[#4858] Build fails on OSX Tiger 10.4 — noreply@...
Bugs item #1883, was opened at 2005-05-06 14:55
Hi,
Hi,
Hi,
On 5/19/05, Shugo Maeda <shugo@ruby-lang.org> wrote:
Hi,
Hi,
[#4869] Infinite loop on YAML.dump (Re: ruby-list:40801) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Hello.
[#4874] - Need to reduce Ruby Sources to the Minimal — Ilias Lazaridis <ilias@...>
Hello all,
Ilias Lazaridis schrieb:
Pit Capitain wrote:
Ryan Davis wrote:
ES wrote:
On May 12, 2005, at 3:13 PM, Ilias Lazaridis wrote:
Mathieu Bouchard wrote:
On Thursday 12 May 2005 22:09, Ilias Lazaridis wrote:
Francois GORET wrote:
Hi,
nobu.nokada@softhome.net wrote:
Hi,
nobu.nokada@softhome.net wrote:
[#4881] Encoding Pragma — Bertram Scharpf <lists@...>
Hi,
[#4886] ruby 1.8.3 preview1 — Yukihiro Matsumoto <matz@...>
Hi,
Yukihiro Matsumoto <matz@ruby-lang.org> [2005-05-12 17:49]:
>What about [ruby-core:4296]?
[#4911] Pointless argc check in Array#select — noreply@...
Patches item #1900, was opened at 2005-05-12 09:33
noreply@rubyforge.org wrote:
>>>>> "D" == Daniel Berger <djberge@qwest.com> writes:
ts wrote:
>>>>> "D" == Daniel Berger <djberge@qwest.com> writes:
On 5/12/05, ts <decoux@moulon.inra.fr> wrote:
Austin Ziegler wrote:
[#4919] - Hierarchical/Modular Directory Structure — Ilias Lazaridis <ilias@...>
The source-code structure should be simplified, lowering barriers for
Hi,
Nakada, Nobuyoshi wrote:
Ilias Lazaridis wrote:
On 5/14/05, Ilias Lazaridis <ilias@lazaridis.com> wrote:
Austin Ziegler wrote:
Hi,
nobu.nokada@softhome.net wrote:
[#4932] ruby-1.8.3 preview1 - failure: cygwin. — Hugh Sasse <hgs@...>
I've just tried to build the preview and got:
[#4992] Pathname#unlink fails on a symlink which points to a directory. — noreply@...
Bugs item #1917, was opened at 2005-05-14 21:33
In article <200505142133.j4ELXEaM011256@rubyforge.org>,
Hello.
In article <20050515153530.0D9F30E0.ocean@m2.ccsnet.ne.jp>,
[#5006] Suggestion for avoiding incivilities — Gavin Sinclair <gsinclair@...>
Hi all,
[#5010] - Function Argument Conventions — Ilias Lazaridis <ilias@...>
As a general rule, the first argument to a function should be the
[#5020] Problems with the "outer scope" operator — Lothar Scholz <mailinglists@...>
Hello,
[#5039] CGI::escapeHTML escapes the ampersand in an existing escape command — noreply@...
Bugs item #1930, was opened at 2005-05-19 11:45
Hi,
Thu, 19 May 2005 13:09:45 +0900, nobuyoshi nakada
Hi,
[#5040] Suggestion to add alias for underscore style method names to camel case named class methods in CGI — noreply@...
Bugs item #1931, was opened at 2005-05-19 11:46
On Thu, 19 May 2005 noreply@rubyforge.org wrote:
On Thu, 19 May 2005 21:22:46 +0900, David A. Black <dblack@wobblini.net>
[#5068] Re: [ ruby-Patches-1939 ] Pathname, totally revamped — Daniel Berger <djberg96@...>
--- nobu.nokada@softhome.net wrote:
Hi,
On 5/22/05, nobu.nokada@softhome.net <nobu.nokada@softhome.net>
Hi,
[#5070] Re: [ ruby-Patches-1939 ] Pathname, totally revamped — Daniel Berger <djberg96@...>
--- daz <dooby@d10.karoo.co.uk> wrote:
[#5075] Re: [ ruby-Patches-1939 ] Pathname, totally revamped — "Berger, Daniel" <Daniel.Berger@...>
> -----Original Message-----
Quoting Daniel.Berger@qwest.com, on Mon, May 23, 2005 at 11:06:58PM +0900:
[#5107] Re: will callable objects be more general in Ruby 1.9? — Eric Mahurin <eric_mahurin@...>
Re: [ ruby-Patches-1939 ] Pathname, totally revamped
On Sun, 29 May 2005, Sam Roberts wrote:
>> So, in short, Liskov's substitution principle can be written:
>> (SubPre -> SubPost) -> (SuperPre -> SuperPost)
>> Does that sound accurate?
> Uhm, well, IMHO, thats so abstract its hard to know if its accurate,
> maybe it could be argued both ways. :-)
Well, if you skip understanding what it is, and instead start making
suppositions about what it might be, then it can be argued both ways.
> If you have a program using an X, and Y is-a X, then you can use Y
> instead of X and it will "work", for some definition of work...
Is it mine which is more abstract, or is it yours? How is it less
abstract to not even say what the word "work" means, compared to defining
it as I did?
> you can use them in an API that expects a String, and it works, then
> they are Liskov substituteable for a String.
Yes, but that's not all there is to Liskov's principle. For example,
consider that Array is a subtype of Enumerable and a subtype of Object and
also a subtype of whatever is the common portion of the String type and
Array type (e.g. both support #clear and #reverse, neither of which are in
Object and Enumerable). All of those subtyping patterns can be applied to
the practice of Ruby, and are being applied, so I think it is important to
consider them in relation to Liskov Substitution / Duck Typing.
> Pragmatically, its likely that any particular implementation may work in
> some cases, but not in others... If it's a read-only file, any attempt
> at doing a desctructive operation is going to fail, and code that
> assumes that a String that is not frozen is modifiable will find that
> this hypothetical file-as-String class is not Liskov substitutable for a
> String.
You may think about more types than what the class structure say there
are. Any property of an Object may be considered a type, as long as
someone thinks it's a useful way of looking at things. The IO type can be
seen as a subtype of ReadableIO, WritableIO, SeekableIO, and others, or
any combination of some of them, despite those latter labels not being in
use in the Ruby environment itself.
You can also think of types on several levels, sometimes considering types
that are "eternal" (e.g. a given object will always stay a String) or
types that are assumed "transient" (e.g. a file could be reopened
differently, or a string could get frozen, ...)
> Design is still partially a matter of taste, not exact rules, isn't it?
Please do make a distinction between prescriptive rules ("you should...")
and descriptive rules ("we give the name Fooable to the an object that can
be fooed with")
I'm not telling how to design things. I'm just proposing a mental tool for
thinking about substitution rules of the Liskov/Ducktype flavour.
More formalism and logic is a way to give personal tastes a shape and a
skeleton and an awareness. It's not the purpose of formalism and logic to
dictate how things should be: that is in the dictatorship department.
,-o--------o--------o--------o-. ,---. irc.freenode.net #dataflow |
| The Diagram is the Program tm| | ,-o-------------o--------------o-.
`-o------------o-------------o-' | | Mathieu Bouchard (Montr饌l QC) |
| t駘駱hone:+1.514.383.3801`---' `-o-- http://artengine.ca/matju -'