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

[REBOL] Updates to hof script

From: jan:skibinski:sympatico:ca at: 16-Nov-2002 0:58

Hi, Several new functions has been added to hof script, such as map-2, fold-2, inner-2, . and | I'll just shortly describe map-2: USAGE: MAP-2 f xs ys DESCRIPTION: Mapping two series via binary function: ((a -+ b -+ c) -+ [a] -+ [b] -+ [c]) MAP-2 takes any binary function 'f :: (a -+ b -+ c) and applies it binary-wise to elements of series [a] and [b], producing as a result a series [c]. The types must match obviously. Map-2 is generic enough to support all kinds of basic arithmetic operations on two vectors, or two matrices, of any dimensions of course. map-2 :+ [1 2 3] [4 5 6] map-2 :subtract [1 2 3] [4 5 6] map-2 :* [1 2 3] [4 5 6] map-2 (func[u v][2 * u + (3 * v)]) [1 2 3] [4 5 6] .: func[x y][sum map-2 :* x y] square-root sum map-2 (func[x y][(x - y) ** 2]) [1 2 3] [4 5 6] ; Euclidean distance sum map-2 (func[x y][abs (x - y)]) [1 2 3] [4 5 6] ; Manhattan distance One can use it for other purposes too: map-2 :xor "My secret message" "This is my not-really-random secret key" Operator '| provides for overloading of operators for numbers, vectors and matrices, if one really insists on the same symbols. For example: | :+ 4 5 | :+ [1 2 3 4] [7 2 0 4] | :+ [[1 2 3][4 5 6]] [[1 1 1][2 2 2]] Needs some error handling, though. Jan P.S. I do not know whether anyone reported it yet (Ladislav?), but these few things really bug me: :- confusion subtract/negate :> syntax error :< syntax error