среда, 25 октября 2017 г.

ToDo. Сделать match вместо RULES

Сделать match:

Чтобы вместо:

VAR head
VAR tail

RULES
 ( aList Empty == )
  Empty
 ( aList .ConstructedWith: List )
  (
   aList .getValues ( @ head @ tail )
   head : tail
  )
 DEFAULT
  aList
 >>> Result
;

Или:


VAR head
VAR tail

RULES
 ( aList .ConstructedWith: Empty )
  Empty
 ( aList .ConstructedWith: List )
  (
   aList .getValues ( @ head @ tail )
   head : tail
  )
 DEFAULT
  aList
 >>> Result
;

Написать:

Match aList
 ( Empty :  Empty )
 ( matched List ( head tail ) : ( head : tail ) )
 ( Default : aList )
 >>> Result
;

Чтобы можно было pattern matching делать.

И переменные (head и tail в нашем случае) определялись в нужном контексте.

Или даже так:

Match aList
 ( Empty ?  Empty )
 ( matched List head tail ? ( head : tail ) )
 ( matched Join head tail ? ( head : tail ) )
 ( Default ? aList )
 >>> Result
;

Или даже так:

Match aList
 ( Empty ?  Empty )
 ( List head tail ? ( head : tail ) )
 ( Join head tail ? ( head : tail ) )
 ( Default ? aList )
 >>> Result
;

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

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