[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>

14 messages 2000/06/06

[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>

Hi,

12 messages 2000/06/07

[#3222] Ruby coding standard? — Robert Feldt <feldt@...>

16 messages 2000/06/09

[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>

> |I am new to Ruby and this brings up a question I have had

17 messages 2000/06/12
[#3281] Re: BUG or something? — Dave Thomas <Dave@...> 2000/06/12

Aleksi Niemel<aleksi.niemela@cinnober.com> writes:

[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>

> I want to contribute to the ruby project in my spare time.

15 messages 2000/06/12

[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>

I was looking at the Ruby editor/IDE for windows and was disappointed with

19 messages 2000/06/14

[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>

Hi All,

17 messages 2000/06/14

[#3415] Re: Waffling between Python and Ruby — Andrew Hunt <andy@...>

>Static typing..., hmm,...

11 messages 2000/06/14

[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>

32 messages 2000/06/16

[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>

Given that I cannot overload =, how should I go about ensuring a deep

20 messages 2000/06/19

[#3694] Why it's quiet — hal9000@...

We are all busy learning the new language

26 messages 2000/06/29
[#3703] Re: Why it's quiet — "NAKAMURA, Hiroshi" <nahi@...> 2000/06/30

Hi,

[#3705] Re: Why it's quiet — matz@... (Yukihiro Matsumoto) 2000/06/30

Hi,

[ruby-talk:03575] Re: Static Typing( Was: Waffling between Python and Ruby)

From: Clemens Hintze <c.hintze@...>
Date: 2000-06-21 06:38:01 UTC
List: ruby-talk #3575
>>>>> "Albert" == Albert Wagner <alwagner@tcac.net> writes:

    Albert> Exactly what does DBC mean in the context of this thread?
    Albert> -- Small is Beautiful

Design By Contract

In programming languages it is often implemented as enter/exit
condition. Something like this pseudo code:

   def fib(f)
     pre { f > 0 and f.type < Integer }
     n, n1 = 1, 0
     (f-1).times do
       n, n1 = n+n1, n
     end
     return n
     post { n > 0 and n.type < Integer }
   end

In this example just after entering the method, the enter condition
pre{} would be executed if the expression returns false an exception
should be thrown. Just before the method would be left the exit
condition post{} would be executed to check e.g. the result of the
method.

In this stupid example the enter condition would be, that one can only 
ask for the fibonacci numbers if 'f' is greater than zero. The result
has also to be greater then zero. Both numbers 'f' and 'n' has to be
instances of class Integer or one of its subclasses.

So if I feed the method fib with '0', '-1' or even '1.2' execptions
should be raised.

This was only one way how to use DBC in an implementation. The
interesting thing is how to design such contracts (pre/post conds)
together with your app.

HTH,
\cle

In This Thread