Search the web
Sign In
New User? Sign Up
OSCAR-PROJECT · OSCAR is an open source REBOL interpreter
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Show off your group to the world. Share a photo of your group with us.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Messages 999 - 1030 of 1031   Newest  |  < Newer  |  Older >  |  Oldest
Messages: Show Message Summaries   (Group by Topic) Sort by Date v  
#1030 From: "Andrew Martin" <Al.Bri@...>
Date: Mon Aug 26, 2002 3:10 am
Subject: Fw: Application to join Oscar-project.
taorebol
Offline Offline
Send Email Send Email
 
Welcome, Friso Elster!

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

----- Original Message -----
From: "Friso Elster" <daonlyfreez@...>
To: "taorebol" <Al.Bri@...>
Sent: Sunday, August 25, 2002 9:15 PM
Subject: Re: Application to join Oscar-project.


> Hi,
>
> I'm a freelance coder/programmer with interest in
> anything good and free on the internet, whether it's
> software or other services. IMHO the Net is flooded
> with nonsense and therefore I'm pleased with
> everything that is sincere and serves the community. I
> came across the Rebol project and thought it to be a
> positive development. Your Oscar Project takes things
> one step further, and therefore I would like to be
> informed on things to come.
>
> Thanx,
>
> daonlyfreez
>
>
>  --- taorebol <Al.Bri@...> schrieb: > Hi!
> > Recently, you've applied to join the Oscar Project
> > mailing list. Due
> > to persistent spamming, we now ask new members to
> > tell us a little
> > bit more about themselves or the company they work
> > for. This lets us
> > get rid of spammers, and get rid of the "noise".
> > Feel free to reply
> > to this email in your own time and tell us some more
> > about yourself.
> > Once you do this, your application to join the list
> > will be approved.
> > Thank you.
> >
> > Andrew Martin
> >
> >
>
> __________________________________________________________________
>
> Gesendet von Yahoo! Mail - http://mail.yahoo.de
> Möchten Sie mit einem Gruß antworten? http://grusskarten.yahoo.de

#1029 From: "Andrew Martin" <Al.Bri@...>
Date: Tue Jun 4, 2002 4:10 am
Subject: Re: Why I want to subscribe to the Oscar group
taorebol
Offline Offline
Send Email Send Email
 
Hi, Gerard.
You've been approved to join the list.
Welcome!

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

----- Original Message -----
From: "gerardcote" <gerardcote@...>
To: <Al.Bri@...>
Sent: Tuesday, June 04, 2002 3:58 PM
Subject: Why I want to subscribe to the Oscar group


> Hello Andrew,
>
> I am just a REBOL newbie that wants to take the most of what is
> available about REBOL.
>
> In fact I already enrolled in another Yahoo group You and Mark are
> driving. The "SENTENCES" DBMS project.
>
> I plan to hear from the 2 groups and sometimes also say something,
> according to my relative progress and knowledge...
>
> Thanks,
> Gerard
>
>

#1028 From: Robbo1Mark@...
Date: Sun Jun 2, 2002 6:12 pm
Subject: Re: [OSCAR Project] New Members wishing to join.
robbo1mark
Offline Offline
Send Email Send Email
 
Well done Andrew,

I've had limited time online myself recently and my inbox is still HUGE
but I've been a bit miffed by all these anonymous requests to join our group.

If you are a real person and have genuine interest then we're sorry and of
course your welcome to join but please "SAY SOMETHING" otherwise
how else is there for us to know your not just a spam-bot.

cheers,

Mark Dickson

#1027 From: "Andrew Martin" <Al.Bri@...>
Date: Sun Jun 2, 2002 3:21 am
Subject: New Members wishing to join.
taorebol
Offline Offline
Send Email Send Email
 
If you're a new member wishing to join this list, please send a email
describing yourself or your company and a sentence describing your desired
to join the list to either myself at Al.Bri@... or to
OSCAR-PROJECT-owner@yahoogroups.com.

Failure to do so means that your application to join this list will be
automatically denied!

I've been forced to come to this decision by the large number of
applications from spammers and noticably suspicious "throw-away" email
addresses of recent applications.

This means that:
          jossph6ys@...
     krambear36@...
     nishs_75@...
have had their applications to join this list denied.

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

#1026 From: Robbo1Mark@...
Date: Fri May 24, 2002 11:45 am
Subject: Re: [OSCAR Project] Still Active
robbo1mark
Offline Offline
Send Email Send Email
 
The OSCAR | PRIMO is still very much active offline.

I've not posted here for an enternity because I've been offline at home since
october,

I still very much research programming languages and their implementation
especially Common Lisp and Scheme which are REBOL like and there's lots of free
and quite well documented implementations available for study, have been
pondering these deeply since late last year, also going through a web course on
perl 5 implementation, will post url here later when i can find it.

OSCAR | PRIMO is not dead, it is something I strongly & deeply believe in, and
something I WILL make happen in my life, both for ME and everybody else, there's
a LOT to it though, not just to create a REBOL clone but to also try to fix
somethings in REBOl which bug me or features I consider missing, like a full
numeric range of datatypes.

The tortoise progresses whilst the Hare sleeps by the side of the road.....


Mark Dickson

#1025 From: "Andrew Martin" <Al.Bri@...>
Date: Fri May 24, 2002 10:16 am
Subject: Re: [OSCAR Project] Still Active
taorebol
Offline Offline
Send Email Send Email
 
> is there a source code repository somewhere (sourceforge)?

No, but check out the files section at:
http://groups.yahoo.com/group/OSCAR-PROJECT

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

#1024 From: "discopsycho" <discopsycho@...>
Date: Fri May 24, 2002 9:59 am
Subject: Re: [OSCAR Project] Still Active
discopsycho
Offline Offline
Send Email Send Email
 
is there a source code repository somewhere (sourceforge)?

#1023 From: "Andrew Martin" <Al.Bri@...>
Date: Fri May 24, 2002 5:26 am
Subject: Re: [OSCAR Project] New file uploaded to OSCAR-PROJECT
taorebol
Offline Offline
Send Email Send Email
 
thedslguy2002 has been banned and his spam deleted.

All new members must now be approved by the moderators.

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

#1021 From: "Andrew Martin" <Al.Bri@...>
Date: Sun May 19, 2002 7:57 pm
Subject: Re: [OSCAR Project] New file uploaded to OSCAR-PROJECT
taorebol
Offline Offline
Send Email Send Email
 
dslproviders@... has been banned and their spam deleted.

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

#1019 From: "Andrew Martin" <Al.Bri@...>
Date: Sun Mar 31, 2002 8:20 pm
Subject: Re: [OSCAR Project] Look at this site
taorebol
Offline Offline
Send Email Send Email
 
bdavisa has been banned and removed from this list for spamming.
Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

#1018 From: "bdavisa" <bdavisa@...>
Date: Sun Mar 31, 2002 1:18 pm
Subject: Look at this site
bdavisa
Offline Offline
Send Email Send Email
 
I haven't been able to get a credit card for 6 years. THis site
helped me get two! Check it out!

Click on link Below!

http://apply4creditcard.com

#1017 From: "nhytro" <sharriff.aina@...>
Date: Mon Mar 11, 2002 11:16 pm
Subject: Useful?
nhytro
Offline Offline
Send Email Send Email
 
#1016 From: "andy_elvey" <andy.elvey@...>
Date: Wed Mar 6, 2002 5:37 am
Subject: Freebell (open-source Reb*l clone) released
andy_elvey
Offline Offline
Send Email Send Email
 
Hi all .

   Just thought I'd mention that Frank Sievertsen has released the
Java source-code for his package called "Freebell".
  ( http://sf.net/projects/freebell ) .  Note - the source is in CVS -
   there isn't an "all-in-one single file" download package as yet.

  A _very_ nicely done piece of work !  I would like to convey my
thanks to Frank for the _huge_ effort he's put into this package!

  ( ... and thanks also to the developers on this group! )

   I just thought I'd do this post because Reb*l is such a cool
language that it deserves to be more widely used , and Freebell is a
great step in making that happen .... :-)

#1015 From: Robbo1Mark@...
Date: Mon Feb 11, 2002 11:52 am
Subject: Re: [OSCAR Project] Still Active
robbo1mark
Offline Offline
Send Email Send Email
 
IN A WORD YES,

I've been buying a new house recntly and re-organizing my life in a big way so
i've not posted anything for a while but I still do LOTS of pertinent research &
studying language implementation / rebol & other related stuff.

Open Source REBOL is still very real & a big ambition of mine but I only have
lots of fragments / puzzle pieces to fit together into a coherent whole, it's a
big project for me , nobody else seems to have anything else to say either
recently.

more to come when I get more free time, promise you.

Mark Dickson


In a message dated Mon, 11 Feb 2002 11:37:42 AM Eastern Standard Time,
"dvandenberg2002" <dvandenberg@...> writes:

> Is this project still active?
>
>
>
> To unsubscribe from this list, send an email to:
>         OSCAR-PROJECT-unsubscribe@yahoogroups.com
> Project mailing list:
>         http://groups.yahoo.com/group/OSCAR-PROJECT
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/

#1014 From: "dvandenberg2002" <dvandenberg@...>
Date: Mon Feb 11, 2002 4:35 pm
Subject: Still Active
dvandenberg2002
Offline Offline
Send Email Send Email
 
Is this project still active?

#1013 From: Marcus Petersson <d4marcus@...>
Date: Tue Dec 18, 2001 9:57 pm
Subject: Re: [OSCAR Project] Series! Blocks, Arrays, Vectors Strings
d4marcus
Offline Offline
Send Email Send Email
 
On Fri, 14 Dec 2001 Robbo1Mark@... wrote:

> array datatype! variable size   ; == array datatype! []
> vector datatype! fixed size ; == vector datatype! []

Switch these two and it's fine. I think the term vector is often used to
mean resizable array.

> Array is a constructor for a fixed datatype! series
>
> Array: function [datatype [datatype!] data [block!] size [integer!]] [
> make array! datatype data size

Not sure about these, but I don't have a better suggestion ATM.

> == vector integer! [1 2 4]
> >> poke b 2 #"a"
> ** Script error: vector a is of type integer! not char!.
> ** near: poke b 2 #"a"

This looks good though.

> By the way, have I got my use of Vector and Array the correct
> way round?

Ah, nope. :-)

Marcus
------------------------------------
  If you find that life spits on you
  calm down and pretend it's raining

#1012 From: Robbo1Mark@...
Date: Fri Dec 14, 2001 1:55 pm
Subject: Series! Blocks, Arrays, Vectors Strings
robbo1mark
Offline Offline
Send Email Send Email
 
I've been doing a lot of thinking about the
types of series! PRIMO ought to have available
both for ease of use and efficiency.

Basically series! have three distinct attibutes
which determine their use and suitability for
various purposes.

These three attributes are as follows;

1. SIZE - fixed or variable

Can values be added or removed to the series?

2. TYPE - any-type! or fixed datatype!

Can values in series! be of any-type! as in the
current REBOL block! & paren! implementation or
are the values of a fixed type! as in REBOL's
any-string! types which contain only char! values.

3. MUTABILITY

Can the values in the series! be changed or are
they immutable? An immutable series! by definition
has a fixed length, it's value is it's value - period.

With this is mind I propose the following series
types for PRIMO which allow for creating series!
with meet various combinations of the series attributes
I mentioned above.

Here are the series! I propose with their attributes
and propsed syntax notation & constructors.


block! any-type! variable size  ; == []

array datatype! variable size   ; == array datatype! []

vector datatype! fixed size ; == vector datatype! []

immutable block! any-type! fixed size   ; == .[]

immutable vector datatype!  ; == vector datatype! .[]

string! variable size       ; == "" or {}

unicode-string! variable size   ; == u"" or u{}

immutable string! fixed size    ; == ."" or .{}

ditto for unicode-string!   ; == .u"" or .u{}


Array is a constructor for a fixed datatype! series
which has the possibility of variable size ie values
can be added or removed.

It's notation is as follows,

Array: function [datatype [datatype!] data [block!] size [integer!]] [

make array! datatype data size

]

example usage

>> a: array integer! [1 2 3] 3 ; note zero indexed
== array integer! [1 2 3]
>> pick a 2
== 3

Vector is a constructor for a fixed datatype! series
which has the property of fixed size ie values
cannot be added or removed, but elements can be changed
unless the vector is immutable.

Vector: function [datatype [datatype!] data [block!] size [integer!]] [

make vector! datatype data size

]

example usage

>> a: vector integer! .[1 2 3] 3 ; immutable data
== vector integer! .[1 2 3]
>> pick a 0
== 1
>> poke a 2 4
** Script Error: vector a has immutable data, cannot be changed.
** near: poke a 2 4
>> b: vector integer! [1 2 3] 3 ; data is mutable
== vector integer! [1 2 3]
>> poke b 2 4
== vector integer! [1 2 4]
>> poke b 2 #"a"
** Script error: vector a is of type integer! not char!.
** near: poke b 2 #"a"

I feel by having series! with varying attributes like these
should enable the selection of the most efficient or appropriate
use of storage to suit the program needs with regards to either
polymorphism or repeated operations on fixed or single datatype!

Let me know what you think?

By the way, have I got my use of Vector and Array the correct
way round?

Array - fixed datatype & variable size

Vector - fixed datatype & fixed size

All series! can be either mutable or immutable and identifiable
with the prefix-joined dot notation ie .[] or ."" etc.

Also a mutable? predicate

>> a: .[1 2 3]
== .[1 2 3]
>> type? a
== immutable block!
>> mutable? a
== false

cheers everybody,

Mark Dickson

#1011 From: Robbo1Mark@...
Date: Fri Dec 14, 2001 7:35 am
Subject: PRIMO Straw Poll / New Op! 's
robbo1mark
Offline Offline
Send Email Send Email
 
PRIMO STRAW POLL / New Op!'s

Question:
Should paren!'s be necessary to enforce
correct evaluation order in PRIMO when
using infix operators?


examples of preferable behaviour?

>> a: 4
== 4
>> print (a + 2)
6
== unset
>> a:= (a + 2)
== 6
>> a
== 6
>> a:= add a 2
== 8
>> a
== 8


however is this correct behaviour?

>> a: 4 ; this part is obviously okay
== 4
>> print a + 2
4
** Script error: + expected val1 of type number! not unset!
** near: print a + 2
>> a:= a + 2    ; reset 'a to :a THEN perform addition?
== 6
>> a
== 4
>> a:= add a 2
== 6
>> a
== 6

Let me know what you all think about this.

Ladislav, I do like your idea very much for using
"word::" as syntax for reset-word! types and it does
type much easier, so Iam considering it deeply, however
Iam sticking to my original idea of := for these
examples, I also think := is more visually distinctive
on page / screen than :: and has some historical
precedence from other languages, but I DO like the
ergonomic properties of your suggestion so it is still
up in the air as far as final syntax goes, but.....

I've been using a bit of PIKE recently and it's great
for prototyping C, C++ type programs in an interpretative
manner and it has properties which enable me to play
about with ideas for series! block! arrays vectors etc.
for PRIMO as well as infix operators.

What do you think of additional infix op! functions that
have destructive binding properties like reset-word!'s do.
Iam think of the C like operators that C, C++, Perl, Python
and Pike all share, here's what Iam proposing,

>> a: 4
== 4
>> a += 5
== 9
>> a
== 9
>> a:= 0
== 0
>> a
== 0
>> a:= (a + 1)
== 1
>> preset-add a 5
== 6
>> a
== 6
>> a += 5   ; Infix op! += equivalent to preset-add word value.
== 11
>> a
== 11
>> postset-add a 5
== 11
>> a
== 16
>> a =+ 5   ; Infix op! =+ equivalent to postset-add word value.
== 16
>> a
== 21
>> a:= unset    ; same as to-unset a
== unset
>> a
** Script error: word a is an unset word, define word before use
** near: a
>> unset-word? a ; no need to quote word as func arg is a quoted 'value
== true

Viewed in this light, if these op!'s are acceptable then word:=
for reset-word! seems more in keeping with reset operators like
+= , -= , =+ etc.

Here's a full list of proposed op!'s with optional alternatives in
brackets to help ease people coming from other languages.

current op!'s

+ - * / ** (^) // (%) >= > = == < <= <> (!=) *see note below
and or xor

new op!'s

preset types perform action then return value

+= -= *= /= //= **= (^=) (%=)

postset types return existing word value then reset word
after peforming action.

=+ =- =* =/ =** =// (=^) (=%)

Interesting that the != for inequality is still lurking in REBOL
as anassignable infix op! value, see below.
>> !=: get to-word "<>"
>> 4 != 5
== true
>>

All the proposed new op!'s have their equivalent prefix functions.
+= or preset-add
=+ or postset-add
**= or preset-power
=** or postset-power

Might as well thrown in

Increment [value [word! number!]]
Decrement [value [word! number!]]

increment same as word += 1 or preset-add word 1
decrement same as word -= 1 or preset-subtract 1

note in these examples the :word must be a number!
for these funcs to work properly.

Anybody any comments?

cheers,

Mark Dickson

#1010 From: Robbo1Mark@...
Date: Mon Dec 3, 2001 10:22 am
Subject: Function Context Query
robbo1mark
Offline Offline
Send Email Send Email
 
Surely this is incorrect?

>> a: has [b c] [ print b print c]
>> a
none
none
>> a/local 3 4
3
4

Surely local words default value should be unset
until they are defined?

Also in the second case is it correct to be
able to pass values to local words in this manner?

How is the above different from this....

>> use [b c] [print b print c]
** Script Error: b has no value
** Near: print b print c

Can somebody please explain the wisdom of this
or is it a bug?

cheers,

Mark Dickson

#1009 From: "Ladislav Mecir" <lmecir@...>
Date: Sat Dec 1, 2001 1:30 am
Subject: Re: [OSCAR Project] Words & Unset
lmecir.geo
Offline Offline
Send Email Send Email
 
Hi Mark,

1) I would suggest you to dig into the LL languages conference, it is an
interesting reading (see Joe Marshall's posts).

2) Rebol has evolved since its 1.0 days and it is better now. It doesn't
resemble Scheme as much as it did. Its Contexts (having nothing in common
with Scheme) are powerful and useful.

3) My proposal is getting a little bit outdated these days, I should
actualize some things.

4) Tail recursion - this is a useful feature. I would suggest to reintroduce
it to the language, but it is necessary to have either first class errors or
no errors in the language like in Rebol 1.x to be able to do so. Moreover,
first class errors are a feature that is useful on its own, it would surely
make the interpreter less complicated and faster.

5) Unset - there are two possible orthogonal strategies. The first one is
the strategy where Unset is legal with *no* exceptions (like illegality of
get for unset words e.g.). Its advantage is, that it makes the interpreter
less complicated/faster (no built-in checks for Unset needed). This has got
its cost: no typo protection built into the language i.e. typos in words not
checked for.

My preferred strategy, which is orthogonal too, is to use the "back to the
future" possibility to make Unset illegal with *no* exceptions (similarly as
in Rebol 1.x). This has got the advantage/disadvantage of built-in checking
(the interpreter must check for unset words getting like it does now), but
this is a more human-centric approach to the programming - a computer must
do some work for the language to be more reliable. This approach would make
the language simpler for human users than the above.

Any other strategy is non-orthogonal, violates the principle of least
surprise and complicates the language.

6) I do like the approach to the Set-/Reset- and Local-/Global- issues. It
is the safest approach possible IMO. To be honest, there is one disadvantage
to it: it may need more checking - anytime you set/reset a word, the
computer should check, if the operation is legal. OTOH, the laguage will
have a pretty good protection mechanism built in.

7) I suggest to have only functions as word-active values, as opposed to the
current state (see http://www.sweb.cz/LMecir/interpret.html ), when even
paths, lit-paths, set-paths, parens, lit-words and set-words are defined as
word-active. This simplifies the language and removes some nasty crashes
present in the current Rebol interpreter.

8) The issue with the local words definition is, that a code like:

    do [i: 1]

should mean, that 'i wouldn't become global, but rather local to the block.
That is why to set global words, it might mean, that there would be only one
possible solution:

     do [set 'i 1]

After setting a word, the reset would of course work well in either case,
i.e. this would reset a global word:

     do [i:= 2]

(is anything wrong with i:: , I find that faster for typing), while here:

     do [
         i: 1
         do [
             i:= 2
         ]
     ]

we reset a local word.

(This is not the only possibility, but it is the most orthogonal one.)

----- Original Message -----
From: <Robbo1Mark@...>
To: <OSCAR-PROJECT@yahoogroups.com>
Sent: Friday, November 30, 2001 8:14 PM
Subject: [OSCAR Project] Words & Unset


Hello everybody,

Here a few more snippets on PRIMO design I've been
thinking about.

I often read Ladislav's writings on REBOL and share
a lot of concerns and appreciate his deep understanding
about many of the aspects and implications of REBOL
as it currently is.

Here, I would like to address certain aspects which
he pointed out in his excellent REBOL enhancement
proposal, and consider these fixes which address
some of the points he raised there.

First of all words & values.

Some Rules for PRIMO,

1. All words are local to the context they are
created in, including and especially functions.
No need to declare /locals, all local by default.

2. Ways of (re)Defining words.

>> Constant word value ; note value any-type! even unset

; note constants can NOT be changed and are immutable for
; the duration / lifetime of the porgram. Use with caution,
; they are CONSTANT and can not be changed once set.
: there is No contant-word! format, word must be explicitly
; defined as constant with the 'CONSTANT function.

>> set word value   ; note value any-type! even unset
>> word: value      ; set-word! format

; as per existing REBOL behaviour except the word arg
; can be of ordinary word format as it is quoted as a
; lit-word! in the function definition.

>> reset word value ; note value any-type! even unset
>> word:= value     ; reset-word! format

; If you try to 'Set a word that is already defined then
; this will raise an exception or fire an error! hence the
; need for a reset-word! type and 'reset function.
; I got this form from PICO language which defines and
; redefines words / variables in this manner.

>> unset        ; a value of type? == unset!
== unset
>> first reduce [()]
== unset

Proposal is to make UNSET a first class legal value which
can represent itself just as none represents a none! value.

The function UNSET will be replaced with a To-Unset word
function and also words can be Set or Reset to the unset value.

All words which are unset would still raise an exception or
fire an error! except for the special case word 'UNSET which
would represent the unset value of unset! type.

All this would need is an internal function to identify
words with unset values ( except of course for the word Unset)

see example code below for more examples...

unset-word?: func [ 'word ] [ pick [ true false]
(word? word) and (unset? get/any word) and ((mold word) <> "unset")]

>> x: 1
== 1
>> print x
1
>> loop 4 [ print x:= x + 1]
2
3
4
5
>> x: 2
** Script Error! word x already defined in this context
** Near x: 2
>> x:= 2
== 2
>> print x
== 2
>> x:= unset    ; unset is a first class value
== unset
>> type? get/any 'x
== unset!   ; unset! is the datatype
>> get/any 'x
== unset    ; unset the value
>> unset    ; unset used as a word! similar
== unset    ; to the way the word! none denotes itself
>> type? unset
== unset!
>> unset? unset
== true
>> word? unset
== false
>> word? 'unset
== true
>> unset? get/any 'x
== true


let me know what you think,

cheers,

Mark Dickson

#1008 From: Robbo1Mark@...
Date: Fri Nov 30, 2001 2:14 pm
Subject: Words & Unset
robbo1mark
Offline Offline
Send Email Send Email
 
Hello everybody,

Here a few more snippets on PRIMO design I've been
thinking about.

I often read Ladislav's writings on REBOL and share
a lot of concerns and appreciate his deep understanding
about many of the aspects and implications of REBOL
as it currently is.

Here, I would like to address certain aspects which
he pointed out in his excellent REBOL enhancement
proposal, and consider these fixes which address
some of the points he raised there.

First of all words & values.

Some Rules for PRIMO,

1. All words are local to the context they are
created in, including and especially functions.
No need to declare /locals, all local by default.

2. Ways of (re)Defining words.

>> Constant word value ; note value any-type! even unset

; note constants can NOT be changed and are immutable for
; the duration / lifetime of the porgram. Use with caution,
; they are CONSTANT and can not be changed once set.
: there is No contant-word! format, word must be explicitly
; defined as constant with the 'CONSTANT function.

>> set word value   ; note value any-type! even unset
>> word: value      ; set-word! format

; as per existing REBOL behaviour except the word arg
; can be of ordinary word format as it is quoted as a
; lit-word! in the function definition.

>> reset word value ; note value any-type! even unset
>> word:= value     ; reset-word! format

; If you try to 'Set a word that is already defined then
; this will raise an exception or fire an error! hence the
; need for a reset-word! type and 'reset function.
; I got this form from PICO language which defines and
; redefines words / variables in this manner.

>> unset        ; a value of type? == unset!
== unset
>> first reduce [()]
== unset

Proposal is to make UNSET a first class legal value which
can represent itself just as none represents a none! value.

The function UNSET will be replaced with a To-Unset word
function and also words can be Set or Reset to the unset value.

All words which are unset would still raise an exception or
fire an error! except for the special case word 'UNSET which
would represent the unset value of unset! type.

All this would need is an internal function to identify
words with unset values ( except of course for the word Unset)

see example code below for more examples...

unset-word?: func [ 'word ] [ pick [ true false]
(word? word) and (unset? get/any word) and ((mold word) <> "unset")]

>> x: 1
== 1
>> print x
1
>> loop 4 [ print x:= x + 1]
2
3
4
5
>> x: 2
** Script Error! word x already defined in this context
** Near x: 2
>> x:= 2
== 2
>> print x
== 2
>> x:= unset    ; unset is a first class value
== unset
>> type? get/any 'x
== unset!   ; unset! is the datatype
>> get/any 'x
== unset    ; unset the value
>> unset    ; unset used as a word! similar
== unset    ; to the way the word! none denotes itself
>> type? unset
== unset!
>> unset? unset
== true
>> word? unset
== false
>> word? 'unset
== true
>> unset? get/any 'x
== true


let me know what you think,

cheers,

Mark Dickson

#1007 From: Jochen Schmidt <jsc@...>
Date: Fri Nov 30, 2001 8:07 pm
Subject: Re: [OSCAR Project] Continuations, back to the future............
poirierde
Offline Offline
Send Email Send Email
 
Continuations are a too highlevel mean to do lowlevel tasks.
Scheme as a teaching language and in it's emphasis on "purity" and
"theoretical elegance" has a use for continuations because it is a good mean
to let students implement more complex control-flow things like exceptions or
threads in a language that is substantially higher than assembler.
In Common Lisp - which is a Lisp dialect coming after Scheme - the designers
(some were former Scheme designers) decided that it is a better idea to
provide such things like exception-handling and multithreading as
special-purpose implementation. Experience shows that if it is done in
specialized efficient code you can easily get a performance boost factor of
somewhere around 100.

ciao,
Jochen

#1006 From: Robbo1Mark@...
Date: Fri Nov 30, 2001 1:05 pm
Subject: Continuations, back to the future............
robbo1mark
Offline Offline
Send Email Send Email
 
Hello again everybody,

I've been away in Scheme world these last few weeks,
however I've subsequently greatly increased my understanding
of possible PRIMO / REBOL implementation methods.

It all started about a month ago when I was thinking about
REBOL and it language ancestry, Forth & Scheme are obvious
antecedents with lots of similar ideas & features, and indeed
REBOL creator Carl Sassenrath worked on implementations of
of both these language families earlier in his career.

I was also intrigued by certain features of ICON and their
similarity REBOL, but what also caught my attention was
some of the more powerful ICON functions / procedures like
the iterators & generators which have the ability to return
possibly multiple values, it's basis of goal directed evaluation
which our Ladislav is a big fan of if I'm correct? and also it's
co-expressions and co-routines which have the ability to be
suspended & also resume.

There was some synchronicity in this, as I also regularly follow
Python & Perl development, I read items on the new iterator &
generator constructs which are now available in Python 2.2 and
also some work being done on "microthreads" which are a very
lightweight threads implementation, much more lightweight than
other system or language threads, and are used for scalable multiple
concurrency  programming. I delved deeper into this and found out
than this had been partially incorporated into core Python from
some research work & implementations done in STACKLESS Python which
was inspired by certain features in ICON & SCHEME and based on a
programming construct called "CONTINUATIONS" which enable you to
do wierd & wonderful things with the control flow of a program.

Now I remembered that REBOL too had continuations once, back in
REBOL v1.x days, it also had tail-call optimisation too which enable
functional programming and deep recursion. I looked up one of the
early REBOL manuals from the "shoebox" at www.rebolforces.com and
found that this indeed was the case. This heightened my curiosity
and I decided to investigate this much deeper.

My query was / is this; If REBOL is so carefully designed, and as we
are often told Carl spent the best part of two decades formulating
his ideas & designs, IF Continuations were in REBOL originally it
must have been because Carl decided that they were an important
feature of the language, desirable enough that much was made of
REBOL having "first class continuations" and would soon also have
"pre-emptive multitasking", why then were these features dropped
from REBOL versions 2.x onwards?

That is a slightly rhetorical question, because I know the answers
which were given at that time, I started using REBOL either just before
or just after the change which was some time in 1998 if I remember
correctly. It was stated that REBOL was moving from a Scheme based
"Continuations" model of interpretation to be based on a Forth like
stack based engine for reasons of speed and efficiency. Without knowing
the implementation details, we can only speculate that this was because
REBOL Version 1 was comparatively slow and inefficient compared to
some other popular and available languages and RT Inc. being a commercial
company had to make the commercial decision to drop some pretty powerful
features for the sake of speed & efficiency if the language was to gain
any traction and uptake with users / developers.

My perspective is that this was a decision taken with one eye on the
commercial needs & imperatives of RT Inc. which needed to quickly
grow a user base to have any viability. If we divorce ourselves from
the commercial needs of RT Inc. and consider them a non issue on
technical grounds, which pursuing open source as interested parties or
hobbyists, and presumably able to sustain ourselves, we can "afford" to
take the long term view on these matters, are first class continuations
and tail-call optimisation desirable features for a language?

My view is that they are desirable, REBOL's designer obviously thought
so too and hence put them in REBOL in the first place.

My question was {Was it the "continuations model" that made REBOL version
ONE slow?} or was it a combination of the method in which continations
were originally implemented in REBOL as well as some other factors which
needed improved?

Larry Palmiter on the REBOL list, as well as some other people, have done
some benchmarking of REBOL against other languages, one of which was
DR SCHEME, which has first class continuations and tail call optimisation,
and whilst current REBOL performs quite well overall, DR Scheme beat or
equalled REBOL on certain functions / algorithms, and generally faired
quite well overall.  The conclusion that I drew from this was that it
was most probably then the implementation design used that made original
REBOL slower ( as well as probably some other implementation features
which needed fixed. )

I decided I should investigate deeply SCHEME implementations and have
immersed myself in SCHEME world for the past month, reading and studying
everything I can about the language, it's features and implementation.
I've discovered and learned lots of things. Firstly REBOL is indeed a
much prettier language and I'm glad I favoured REBOL style and syntax
over the antiquated LISPish syntax that Scheme has. Also REBOL has richer
datatypes and inbuilt internet capabilities which are a massive plus,
however that's about it. On everthing else SCHEME wins hands down, though
to be fair REBOL is less than five years old whreas Scheme is twenty five
years old and LISP is over forty years old, so much more is understood
and developed in these languages. The SCHEME resources are immense and
I've been reading voraciously and studying code of various aspect of
Scheme features and implementation techniques and standards.

Scheme is also favoured much in academia and much has been written
and implemented, with sources, on lots of the practical (and esoteric)
problems of computer languages and ther implementation.

What I soon learned that best performing SCHEME implementations are
Chez Scheme, PetiteChez Scheme & Dr Scheme / MzScheme. Other useful
implementaions are Systas scheme & R-scheme.

For alittle bit of background;

ChezScheme is a commercial implementation available from Cadence Research
and is based on a very fast incremental compiler, there is also the freely
available PetiteChez scheme which is a token threaded interpreter.
Source code is not available for either of these however their chief
designer and implementer is R. Kent Dibvig, formerly of Indiana University
and who is a leading Scheme luminary and who has written volumes of essays
and example of thier practical implementation, code examples, as well as
in depth analysis of continuations, recursion, macros, garbage collection,
compilers etc. etc. Of special interest are his writings on continuations
and multiple return values and concurrency on stack based interpreters.

Dr Scheme / MzScheme are an exellent open source implementation of a lot
of Kent Dybvig's implementation ideas and writings. Also of interest is
Systas Scheme by Tom Lord which is also open source free software with
implementation documentation. Tom Lord was previously a lead developer
and author on SCM sheme and GUILE the GNU project extension language
which is alos used in GNOME desktops.

So from all this I've learned a lot of useful implementation ideas for
PRIMO and how to bring back first class continuations and tail call
optimisation as useful control structures and language features.
With these all sorts of wonderful things become possible, here's a
short of the sort of functions and concurrency and control features
you can get ;
tail-recursion optimisation, iterators, generators, co-expressions,
co-routines, microthreads, exceptions & error handling, escape procedures,
one shot continuations,first class continuations,co-operative multitasking
pre-emptive multitasking.

As another piece of synchronicity, Joel Neely posted a piece on the REBOL
list about the Little Languages Conference, upon which reading it made
mention of Joe Marshall who helped implement a big part of original
REBOL which was described as Scheme with filed off parenthesis.

Continuations, back to the future............


cheers,

Mark Dickson

#1005 From: <OSCAR-PROJECT@yahoogroups.com>
Date: Mon Nov 12, 2001 9:32 am
Subject: New file uploaded to OSCAR-PROJECT
OSCAR-PROJECT@yahoogroups.com
Send Email Send Email
 
Hello,

This email message is a notification to let you know that
a file has been uploaded to the Files area of the OSCAR-PROJECT
group.

   File        : /src-for-msdev6.zip
   Uploaded by : ldurigneux@...
   Description : Oscar 0.0.1 srcs and msdev6 pjt, with bin

You can access this file at the URL

http://groups.yahoo.com/group/OSCAR-PROJECT/files/src-for-msdev6.zip

To learn more about file sharing for your group, please visit

http://help.yahoo.com/help/us/groups/files

Regards,

ldurigneux@...

#1004 From: marrowmilo@...
Date: Sun Nov 11, 2001 8:40 pm
Subject: Re: Revised -Rebol Coded/ Diagram
niemteltm
Offline Offline
Send Email Send Email
 
--- In OSCAR-PROJECT@y..., "Andrew Martin" <Al.Bri@x> wrote:
> marrowmilo wrote:
> > Revised   -Rebol    Coded/  Diagram
> >
> > |
> > | foreach
> > | example
> > | colors ->
> > |           | [if parse
> > |           | example
> > |           | [to "pink"
> > |           |   to end]->
> > |                           | -
> > |                           | print
> > |                           | example]]
> > |                           | ->
>
> That seems awfully time consuming. What's wrong with simply writing:
>
>         foreach Color Colors [
>             if parse Color [
>                 to "pink" to end
>                 ][
>                 print Color
>                 ]
>             ]
>     ?
>
> Note that I've Title-Cased the important words; changed
your 'example to
> 'Color to better reflect the Many contents of 'Colors and the
single nature
> of 'Color; and used consistent indenting.
>
> I hope that helps!
>
> Andrew Martin
> ICQ: 26227169 http://valley.150m.com/
> -><-


  ------------------------------------------------
H O W   T H E   R E B O L   S C R I P T   W O R K S ?
==================================================
Andrew : Thank you for your reply am now trying pseudcode
          to get some understanding of how the script works.
          Suggestions would be most welcome from you
          and fellow subscribers.
          - - - - - - - - - - - - - - - - - -
-----------------------------------------------------
P O S S I B L E  P S E U D O   C O D E
======================================
  { loop | foreach color in colors }
             if  [ not end color | true ]
                      if [color contains " pink" | true ]
                          print color
   { go to  loop }

--------------------------------------------------------
R E B O L
=========
colors: ["sun is red" "a pink rose" "gold coin" "a pink elephant"]
  foreach color colors [
  if parse color [ to "pink" to end]
  [print color]]
------------------------------------------------
>> colors: ["sun is red" "a pink rose" "gold coin" "a pink elephant"]
== ["sun is red" "a pink rose" "gold coin" "a pink elephant"]
>>  foreach color colors [
[     if parse color [ to "pink" to end]
[     [print color]]
a pink rose
a pink elephant
>>
-------------------------------------------------
foreach Color Colors [
             if parse Color [
                 to "pink" to end
                 ][
                 print Color
                 ]
             ]
  ------------------------------------------------
H O W   T H E   R E B O L   S C R I P T   W O R K S ?
==================================================
                 s o m e
  	  a l t e r n a t i v e s
	 p o s s i b i l i t i e s
	     c h o i c e s
================================================


	 "a pink rose"

	 "pink" 		 length (6 less 2)


	 " 		 start 2nd pass

	 a - p i false

	 - p i n false

	 p i  n k true

	 i n k -

	 n k - r

	 k - r o

	 - r o s

	 r o s e

	 " 		 end 2nd pass


---------------------------------------------------------
ANY SUGGESTIONS MOST WELCOME

TONY MARROW

#1003 From: "Andrew Martin" <Al.Bri@...>
Date: Sun Nov 11, 2001 12:12 am
Subject: Re: [OSCAR Project] Revised -Rebol Coded/ Diagram
taorebol
Offline Offline
Send Email Send Email
 
marrowmilo wrote:
> Revised   -Rebol    Coded/  Diagram
>
> |
> | foreach
> | example
> | colors ->
> |           | [if parse
> |           | example
> |           | [to "pink"
> |           |   to end]->
> |                           | -
> |                           | print
> |                           | example]]
> |                           | ->

That seems awfully time consuming. What's wrong with simply writing:

         foreach Color Colors [
             if parse Color [
                 to "pink" to end
                 ][
                 print Color
                 ]
             ]
     ?

Note that I've Title-Cased the important words; changed your 'example to
'Color to better reflect the Many contents of 'Colors and the single nature
of 'Color; and used consistent indenting.

I hope that helps!

Andrew Martin
ICQ: 26227169 http://valley.150m.com/
-><-

#1002 From: marrowmilo@...
Date: Sat Nov 10, 2001 10:15 pm
Subject: Revised -Rebol Coded/ Diagram
niemteltm
Offline Offline
Send Email Send Email
 
Revised   -Rebol    Coded/  Diagram


|
| foreach
| example
| colors ->
|
|           | [if parse
|           | example
|           | [to "pink"
|           |   to end]->
|                           | -
|                           | print
|                           | example]]
|                           | ->



PART 1-

#1001 From: Marcus Petersson <d4marcus@...>
Date: Thu Nov 8, 2001 11:44 pm
Subject: Re: [OSCAR Project] Datamodel
d4marcus
Offline Offline
Send Email Send Email
 
Sounds good, Daan. We're probably all looking forward to seeing your code.

On Mon, 5 Nov 2001, Daan Oosterveld wrote:

> A small example how I've implemented the datamodel so far in C++.
> The attachment is an PDF document of a class hierachy..

Sorry, but it's too little to give any real clue.

> In this model the values are fixed sizes.
> With exeption to complex or variable size values.

Figured as much. Did you comprehend enough of my "variable-size values"
ramblings to have an opinion about the issue?

Btw, there is a solution to the problem of how to throw away values with
block (which is automatic for contained values, but obviously not for
referenced ones). Just let value tables be local to containers. That's it.
Perhaps this was alreay obvious to others. :-/

I should probably try implementing these reference containers, when you
have released your code.

As for performance of reference blocks: While we lose some access speed
vs value blocks, we might gain some when manipulating (e.g sorting) them.
Also, reference blocks doesn't require as large continuous memory areas,
but on the other hand you need 4 extra ones to store the values in.

Reference blocks should be a win for storing small values (32 - 64 bits)
vs fixed value (128bit) blocks, but a loss for large values. It's hard to
predict which the general case is.

Marcus
------------------------------------
  If you find that life spits on you
  calm down and pretend it's raining

#1000 From: Robbo1Mark@...
Date: Mon Nov 5, 2001 12:19 pm
Subject: Unicode Syntax Solved?
robbo1mark
Offline Offline
Send Email Send Email
 
Have just been browsing in Python Land and have seen
how they deal with unicode chars & strings and low
and behold it seems that the "u" prefix is how they
solve the unicode syntax problem.

So to keep as much REBOL compatability as possible
for PRIMO here is my latest suggestions for PRIMO
syntax for chars & strings & unicode * immutables
etc.

>> type? #"A"
== char!

>> type? #'A"
== unicode-char!

>> type? ""     ; or {}
== string!  ; ascii

>> type? .""    ; or .{}
== immutable-string!

>> type? u""    ; or u{}
== unicode-string!


>> type? .u""   ; or .u{}
== immutable-unicode-string!

>> type? []
== block!

>> type? .[]
== immutable-block!

This way deeply quoted strings etc would work just as
they currently do in REBOL and much compatibility could
be retained.

Is everyone agreeable?

cheers,

Mark Dickson

#999 From: "Daan Oosterveld" <emptyhead@...>
Date: Mon Nov 5, 2001 11:51 am
Subject: Datamodel
empty0head
Offline Offline
Send Email Send Email
 
 
Hello,
 
A small example how I've implemented the datamodel so far in C++.
 
The attachment is an PDF document of a class hierachy..
In this model the values are fixed sizes. With exeption to complex or variable size values.
 
Series and larger datatypes are stored in Containers. Containers always have one or more Pointer values attached to them. When a pointer value is constructed it increases the used integer in the container.
If the used integer hits zero the container will be destroyed. Also all items in that container are released. This could start a chain reaction through a tree of series and deallocate all linked values.
When a Pointer is deallocated it will decrease the used integer. Removing the container when needed.
In this deallocation scheme cyclic memory structures will not be deallocated.
 
I have constructed a parser. It works quite well but It is not finished yet.
 
cheers,
 
Daan Oosterveld
 

Messages 999 - 1030 of 1031   Newest  |  < Newer  |  Older >  |  Oldest
Advanced
Add to My Yahoo!      XML What's This?

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help