суббота, 8 октября 2016 г.

#1289. "А ваш язык так может?" №10

[ 1 2 ]
.map> ( [ DUP ] )
// - дублируем КАЖДЫЙ ЭЛЕМЕНТ и превращаем пару в массив
.fold>
// - превращаем массив массивов в массив
.equal [ 1 1 2 2 ]
.testAssure

[ 1 2 ]
.map> ( [ DUP DUP ] )
// - ДВА РАЗА дублируем КАЖДЫЙ ЭЛЕМЕНТ и превращаем тройку в массив
.fold>
// - превращаем массив массивов в массив
.equal [ 1 1 1 2 2 2 ]
.testAssure

ARRAY FUNCTION .elementToArray
  IN anElement
  ^ IN aLambda
 [ anElement aLambda DO ]
 // - выполняем лямбду над элементом, и оборачиваем всё это в массив
 >>> Result
; // .elementToArray

[ 1 2 ]
.map> .elementToArray DUP
// - дублируем КАЖДЫЙ ЭЛЕМЕНТ и превращаем пару в массив
.fold>
// - превращаем массив массивов в массив
.equal [ 1 1 2 2 ]
.testAssure

[ 1 2 ]
.map> .elementToArray ( DUP DUP )
// - ДВА РАЗА дублируем КАЖДЫЙ ЭЛЕМЕНТ и превращаем тройку в массив
.fold>
// - превращаем массив массивов в массив
.equal [ 1 1 2 2 ]
.testAssure

ARRAY FUNCTION .process>
  ARRAY IN anArray
  ^ IN aLambda
 anArray
 .map> .elementToArray ( aLambda DO )
 .fold>
 >>> Result
; // .process> 

WordAlias .transform> .process>

[ 1 2 ]
.transform> DUP
.equal [ 1 1 2 2 ]
.testAssure

[ 1 2 ]
.transform> ( DUP DUP )
.equal [ 1 1 1 2 2 2 ]
.testAssure

[ 1 2 ]
.transform> ( DUP DUP DUP )
.equal [ 1 1 1 1 2 2 2 2 ]
.testAssure

[ 1 2 ]
.transform> NOP
.equal [ 1 2 ]
.testAssure

WordAlias .keep NOP

[ 1 2 ]
.transform> .keep
.equal [ 1 2 ]
.testAssure

WordAlias .leaveAsIs .keep

[ 1 2 ]
.transform> .leaveAsIs
.equal [ 1 2 ]
.testAssure


Комментариев нет:

Отправить комментарий