вторник, 26 апреля 2016 г.

#1234. Ни о чём. Про "функциональщину"

Ну и можно написать:

for i := 0 to N do 
 if IsPredicate(Item[i]) then 
  Process(Transform(Item[i]))

а можно:

Items 
.filter> IsPredicate 
.map> Transform 
.for> Process

, по мне второе - читабельнее.

Это к вопросу об SQL и LINQ.

http://programmingmindstream.blogspot.ru/2016/04/1132-2.html

ARRAY FUNCTION .mapToTarget>
  ARRAY IN anArray
 anArray .map> .Target >>> Result
; // .mapToTarget>

BOOLEAN elem_func IsFriend
 Self .IsStereotype st_friend::Dependency 
 >>> Result
; // IsFriend


  Self .Dependencies
  .filter> .IsFriend
  .mapToTarget>
  .for> (
    IN anItem
  ) // .for>

elem_iterator ChildrenEx
 Cached:
 (
  VAR l_Children
  Self .Children >>> l_Children
  
  Self .Dependencies
  .filter> .IsFriend
  .mapToTarget>
  .for> (
    IN anItem
    VAR l_Friend
    anItem .FriendClass >>> l_Friend
    l_Children 
    .join> ToArray: l_Friend
    >>> l_Children
  ) // .for>

elem_iterator ChildrenEx
 Cached:
 (
  VAR l_Children
  Self .Children >>> l_Children
  
  Self .Dependencies
  .filter> .IsFriend
  .mapToTarget>
  .for> (
    IN anItem
    VAR l_Friend
    anItem .FriendClass >>> l_Friend
    if ( l_Children l_Friend .Name .HasModelElementWithName ! ) then
    begin
     l_Children 
     .join> ToArray: l_Friend
     array:Copy
     >>> l_Children
    end // ( l_Children l_Friend .Name .HasModelElementWithName ! )
  ) // .for>

elem_iterator ChildrenEx
 Cached:
 (
  VAR l_Children
  Self .Children >>> l_Children
  
  Self .Dependencies
  .filter> .IsFriend
  .mapToTarget>
  .map> .FriendClass
  .for> (
    IN aFriend
    if ( l_Children aFriend .Name .HasModelElementWithName ! ) then
    begin
     l_Children 
     .join> ToArray: aFriend
     array:Copy
     >>> l_Children
    end // ( l_Children aFriend .Name .HasModelElementWithName ! )
  ) // .for>

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

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