[#4858] Build fails on OSX Tiger 10.4 — noreply@...

Bugs item #1883, was opened at 2005-05-06 14:55

21 messages 2005/05/06
[#4862] Re: [ ruby-Bugs-1883 ] Build fails on OSX Tiger 10.4 — Yukihiro Matsumoto <matz@...> 2005/05/07

Hi,

[#4865] Re: [ ruby-Bugs-1883 ] Build fails on OSX Tiger 10.4 — Ryan Davis <ryand-ruby@...> 2005/05/07

[#4868] Re: [ ruby-Bugs-1883 ] Build fails on OSX Tiger 10.4 — nobu.nokada@... 2005/05/07

Hi,

[#5053] Re: [ ruby-Bugs-1883 ] Build fails on OSX Tiger 10.4 — Shugo Maeda <shugo@...> 2005/05/19

Hi,

[#5056] Re: [ ruby-Bugs-1883 ] Build fails on OSX Tiger 10.4 — Mark Hubbart <discordantus@...> 2005/05/19

On 5/19/05, Shugo Maeda <shugo@ruby-lang.org> wrote:

[#4874] - Need to reduce Ruby Sources to the Minimal — Ilias Lazaridis <ilias@...>

Hello all,

31 messages 2005/05/10
[#4879] Re: [THIN] - Need to reduce Ruby Sources to the Minimal — Pit Capitain <pit@...> 2005/05/11

Ilias Lazaridis schrieb:

[#4883] Re: [THIN] - Need to reduce Ruby Sources to the Minimal — Ilias Lazaridis <ilias@...> 2005/05/12

Pit Capitain wrote:

[#4884] Re: [THIN] - Need to reduce Ruby Sources to the Minimal — Ryan Davis <ryand-ruby@...> 2005/05/12

[#4888] Re: [THIN] - Need to reduce Ruby Sources to the Minimal — Ilias Lazaridis <ilias@...> 2005/05/12

Ryan Davis wrote:

[#4889] Re: [THIN] - Need to reduce Ruby Sources to the Minimal — ES <ruby-ml@...> 2005/05/12

[#4890] Re: [THIN] - Need to reduce Ruby Sources to the Minimal — Ilias Lazaridis <ilias@...> 2005/05/12

ES wrote:

[#4891] Re: [THIN] - Need to reduce Ruby Sources to the Minimal — Alexander Kellett <ruby-lists@...> 2005/05/12

On May 12, 2005, at 3:13 PM, Ilias Lazaridis wrote:

[#4911] Pointless argc check in Array#select — noreply@...

Patches item #1900, was opened at 2005-05-12 09:33

11 messages 2005/05/12

[#4919] - Hierarchical/Modular Directory Structure — Ilias Lazaridis <ilias@...>

The source-code structure should be simplified, lowering barriers for

20 messages 2005/05/12

Re: [ ruby-Patches-1939 ] Pathname, totally revamped

From: Mathieu Bouchard <matju@...>
Date: 2005-05-29 18:59:16 UTC
List: ruby-core #5121
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 -'

In This Thread

Prev Next