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

[REBOL] Rebol's function argument specification dialect

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 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 Phone: +64 6 843 5095 or Fax: +64 6 833 6759 or E-mail: [postmaster--colenso--school--nz]