Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

Rebol's function argument specification dialect

 [1/2] from: andrew::martin::colenso::school::nz at: 24-Dec-2003 22:44


Steven wrote (in another thread):
> ADD-FILLER: func [ > "Add a specified number of blanks to FORMATTED-LINE" > SPACE-COUNT integer! > ] [
And why didn't Rebol pick up the fact that 'integer! should have been inside square brackets? Because, sometimes, you want a function that takes a data-type! Value, as per below:
>> source collect
collect: func [ "Collects the results of block evaluations." Block [block!] "The block to 'do." /Only "Inserts the result as a series." /Full "Don't ignore none! values." /Initial Type [series! datatype!] "Specifies the type of the result." ][ use [Break Result Results] [ Break: func [ "Breaks out of the 'Collect." /Return "Forces the loop function to return a Value." Value [any-type!] ] [ system/words/break/return either Return [ Value ] [ Results ] ] Results: any [ all [ datatype? Type make Type 0 ] Type copy [] ] compose/deep [ if not any [ unset? set/any 'Result do [(bind Block 'Break)] (pick [[none? :Result] []] not Full) ] [ (pick [insert insert/only] not Only) tail Results :Result Results ] Results ] ] ] Admittedly this is the first function that uses a data-type as an argument, but I'm sure that Joel can think of many more! :) I wonder if it's a good idea for 'func and it's relatives to insist on some sort of data-type specification for each argument? It also might be an idea for the return argument to be specified as well. Or would this be "too much" for Rebol? In that it doesn't adhere to Rebol's ideal form as perceived by us all? Andrew J Martin Attendance Officer Speaking in tongues and performing miracles. Colenso High School Arnold Street, Napier. Tel: 64-6-8310180 ext 826 Fax: 64-6-8336759 http://colenso.net/scripts/Wiki.r?AJM http://www.colenso.school.nz/ DISCLAIMER: Colenso High School and its Board of Trustees is not responsible (or legally liable) for materials distributed to or acquired from user e-mail accounts. You can report any misuse of an e-mail account to our ICT Manager and the complaint will be investigated. (Misuse can come in many forms, but can be viewed as any material sent/received that indicate or suggest pornography, unethical or illegal solicitation, racism, sexism, inappropriate language and/or other issues described in our Acceptable Use Policy.) All outgoing messages are certified virus-free by McAfee GroupShield Exchange 5.10.285.0 Phone: +64 6 843 5095 or Fax: +64 6 833 6759 or E-mail: [postmaster--colenso--school--nz]

 [2/2] from: greggirwin:mindspring at: 4-Nov-2003 17:35


Hi Andrew, AM> I wonder if it's a good idea for 'func and it's relatives to insist on AM> some sort of data-type specification for each argument? It also might be AM> an idea for the return argument to be specified as well. Or would this AM> be "too much" for Rebol? I don't think it would be a good fit in REBOL. If you really want to do that kind of thing, you could easily write a small wrapper dialect to do it. -- Gregg