J语言

例子

J是极强大的语言，它的程序可以非常简洁，但以人类的常用沟通语言而言通常会变得像密码。以下是个快速排序的单行小程序：
  qsort =: ]`(($:@:((}.<:{.)#}.)),{.,($:@:((}.>{.)#}.)))@.(*@#)
但是如果我们定义一些中间记忆名称的话，（NB.为注释）:
  id        =: ]                                 NB. 定义函数choose    =: @.                                NB. 条件执行first     =: {.                                NB. 集合首元素rest      =: }.                                NB. 除首元素之外的其他元素o         =: @:                                NB. 函数撰写:  f o g (x)  =   f(g(x))
  void      =: [:
  sign      =: * : void                          NB. monadic only, void dyadic
  length    =: # : void                          NB. monadic only, void dyadic
  selfrom   =: void : #                          NB. dyadic only, void monadic
  notEmpty  =: sign o length                     NB. sign 0 = 0
然后这个J版的快速排序变得更具可读性：
  selLEF    =: (rest <: first) selfrom rest      NB. select Less-than or Equal to First
  selGTF    =: (rest >  first) selfrom rest      NB. select Greater-Than First
 
  qsort  =: id ` (($: o selLEF),first,($: o selGTF))  choose notEmpty
注意这是一个匿名递归函数. J语言提供了自身形参 操作 $: 来匿名引用大量的封装数据。甚少语言有能力去表达它。