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

[REBOL] functions

From: lmecir::mbox::vol::cz at: 6-Mar-2003 19:27

Hi all, Gabriele's custom datatype application, especially his (and mine) SUBFUNC function inheritance HOF (will be described separately) needed reliable means to return values from functions. I multiextrasuperparaprogressivized one of my functions and obtained TFUNC: tf: tfunc [x] [return x] ; the functions to compare with tf: f1: func [x] [x] f2: func [x] [return x] f3: func [[catch] x] [x] f4: func [[catch] x] [return x] f5: func [[throw] x] [x] f6: func [[throw] x] [return x] 1) TF differs from F1, F3, F4 and F5: x: does [return make error! "e"] type? tf :x ; == error! type? f1 :x ; ** User Error: e ; ** Near: return make error! "e" 2) TF differs from F2, F4 and F6: x: first [x:] type? tf :x ; == set-word! type? f2 :x ; == word! 3) Another example: tf2: tfunc [x] [ either x [throw make error! "x"] [return make error! "x"] ]
>> type? tf2 false
== error!
>> type? tf2 true
** User Error: x ** Near: tf2 true 4) Anoher tf3: tfunc [block] [ do block ] g: does [tf3 [return 1] 2] g ; == 1 5) And the last one g: func [[catch]] [tf3 [throw make error! "e"]] g ** User Error: e ** Near: g Ciao -L