Fixing my mistake:

> lambda=:3 :0
>  if. 1=#;:y do.
>    3 :((y,'=.y');<;._2]0 :0)`''
>  else.
>    (,<#;:y) Defer (3 :(('''',y,'''=.y');<;._2]0 :0))`''
>  end.
> )
>
> Defer=:2 :0
>  if. (_1 {:: m) <: #m do.
>    v |. y;_1 }. m
>  else.
>    (y;m) Defer v`''
>  end.
> )
>
> Note''
>  single letter words which follow have meaning beyond
>  this message and outside the J language.
>  Search for "S combinator" for details and examples.
> )
>
> I=: lambda 'x'
>  x
> )
>
> K=: lambda 'x y'
>  y
> )

That was wrong, it should be:

K=: lambda 'x y'
  x
)

> S=: lambda 'x y z'
>  (x`:6 z)`:6 y`:6 z
> )
>
> I think I got that right -- I tried finding examples, but people
> discussing this system seem to be shy about using examples.
>
> Anyways, here's an example of how to achieve the above identity gerund
> I in terms of S and K:
>
>   I`:6 'a'
> a
>   (((S`:6 K)`:6 K)`:6 K)`:6 'a'
> a

With the corrected definition for K, this becomes:

   ((S`:6 K)`:6 K)`:6 'a'
a

FYI,

-- 
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to