Код:
PROGRAM WasGenerated.ms.script USES DogAndBracket.ms.dict // - в этом словаре описано слово @[ ; USES Testing.ms.dict // - в этом словаре описано слово Test&Dump ; Test&Dump WasGenerated.ms.script.test : A @SELF // - функция возвращает ссылку на саму себя ; // A : B @SELF // - функция возвращает ссылку на саму себя ; // B : C @SELF // - функция возвращает ссылку на саму себя ; // C @[ // - слово @[ открываем массив ССЫЛОК, а не ЗНАЧЕНИЙ A A A B B B C C C A A A B B B C C C ] // - это массив ССЫЛОК на функции (слова) .filter> ( @ B != ) // - отфильтровываем значения равные ссылке на B // ВАЖНО: тут сравниваем УКАЗАТЕЛИ на функции .map> pop:Word:Name // - мапируем значение на вызов функции pop:Word:Name .filter> ( 'C' != ) // - отфильтровываем значения равные 'C' // ВАЖНО: тут сравниваем ИМЕНА на функций .for> // - итерируем смапированные значения . // - печатаем каждое итерируемое значение ; // WasGenerated.ms.script.test WasGenerated.ms.script.testВывод на печать:
VOID TestWithDump WasGenerated.ms.script.test : A A ; // : A : B B ; // : B : C C ; // : C WasGenerated.ms.script.test DumpElement ARRAY [ @ A @ A @ A @ B @ B @ B @ C @ C @ C @ A @ A @ A @ B @ B @ B @ C @ C @ C ] ( @ B != ) SWAP Array:Filter pop:Word:Name SWAP Array:Map ( 'C' != ) SWAP Array:Filter . SWAP Array:Iterate ; // VOID TestWithDump WasGenerated.ms.script.test A A A A A A
Комментариев нет:
Отправить комментарий