Какой эквивалент Rebol применяется в красном цвете?

Rebol применил функцию создания карты на красном языке, что эквивалент Rebol применяется в Красный, если есть?


person user310291    schedule 18.06.2018    source источник


Ответы (1)


В настоящее время в Red нет родного apply. Вы можете написать apply самостоятельно:

apply: func [
    "Apply a function to a block of arguments"
    fn      [any-function!] "Function value to apply"
    args    [block!]        "Block of arguments (to quote refinement use QUOTE keyword)"
    /local refs vals val
][
    refs: copy []
    vals: copy []
    set-val: [set val skip (append/only vals val)]
    parse args [
        some [
            'quote set-val
        |   set val refinement! (append refs to word! val)
        |   set-val
        ]
    ]
    do compose [(make path! head insert refs 'fn) (vals)]
]

Он работает немного иначе, чем apply Ребола (потому что мне не нравится синтаксис apply Ребола). Если вы определяете какую-то функцию:

f: func [
    foo
    /bar
        baz
][
    reduce [foo bar baz]
]

тогда вот как это использовать apply:

>> apply :f [1 /bar 1]
== [1 true 1]
>> apply :f [quote /bar]
== [/bar false none]
>> apply :f [quote /bar /bar 1]
== [/bar true 1]

См. http://red.qyz.cz/apply-and-ufcs.html для подробностей.

person rebolek    schedule 19.06.2018