View in color | View discussion [14 posts] | License |
Download script | History | Other scripts by: clecorre |
30-Apr 14:32 UTC
[0.057] 11.103k
[0.057] 11.103k
do-pairs.rREBOL [
File: %do-pairs.r
Date: 08-03-2016
Author: "Christian Le Corre"
Title: "Do pairs"
Purpose: {Do pairs with values from a block}
]
do-pairs: func [param [block!] /rm-conv /local output][
output: make block! []
either rm-conv
[
foreach v1 param [
foreach v2 param[
if all [none? find/only output reduce[v2 v1] not equal? v1 v2][
append/only output reduce[v1 v2]
]
]
]
]
[
foreach v1 param [
foreach v2 param[
if not equal? v1 v2 [
append/only output reduce[v1 v2]
]
]
]
]
unique output
]
; var: ["toto" "titi" "tutu"]
; res: do-pairs/rm-conv var
; == [["toto" "titi"] ["toto" "tutu"] ["titi" "tutu"]]
; res: do-pairs var
; == [["toto" "titi"] ["toto" "tutu"] ["titi" "toto"] ["titi" "tutu"] ["tutu" "toto"] ["tutu" "titi"]] Notes
|