- commenting
until end of line
#
Awk, E, Icon, merd, Perl, PHP, Python, Ruby, Shell, Tcl
//
C++, C99, Dylan, E, Java, PHP
--
Ada, Cecil, Eiffel, Haskell, Lua, Sather, Simula
;
Lisp, Rebol
%
Erlang, Postscript, Prolog, TeX
'
Basic
\
Forth
nestable
(* ... *)
Beta, ML, Modula-3, OCaml, Pascal
{ ... }
Pascal
{- ... -}
Haskell
non nestable
" ... "
Smalltalk
/* ... */
C, C++, Java, PHP
<!-- ... -->
HTML, XML
- assignment/declaration
=
Basic, C, C++, Erlang, Haskell, Icon, Java, Lua, Mercury, merd, Mozart, OCaml, Perl, PHP, Prolog, Python, Ruby
:=
Ada, Cecil, Dylan, E, Eiffel, merd, ML, Modula-3, OCaml, Pascal, Sather, Simula, Smalltalk
<-
Haskell, OCaml
:-
Prolog
:
Rebol
define
Scheme
def
E, PostScript
setq
Lisp
set
Tcl
defun
Lisp
- function call
f(a, b, ...)
Basic, C, C++, E, Java, Lua, Pascal, PHP, Python, Ruby
f a b ...
Haskell, OCaml, SML, Tcl
f a, b, ...
(Visual?) Basic
- sequence
;
C, C++, E, Java, Lua, merd, OCaml, Perl, PHP, Python, Ruby, Tcl
end-of-line
Basic, E, Lua, merd, Python, Ruby, Tcl
- grouping expressions
( ... )
C, C++, E, Haskell, Java, Lua, merd, OCaml, Pascal, PHP, Python, Ruby, SML, Tcl
indentation
merd
begin ... end
OCaml, Ruby
- block (grouping statements, when statements are not expressions)
[ ... ]
Tcl
{ ... }
PHP
{ ... } (3)
C, C++, E, Java
indentation
Python
indentation (3)
Haskell, merd
- method invocation
.
Basic, Beta, C++, Cecil, Delphi/Kylix, Eiffel, Icon, Java, Lua, merd, Modula-3, Python, Ruby, Sather, Visual
:
Lua
#
OCaml
functional syntax (4)
CLOS, Dylan, Haskell, Mercury
object method para (5)
Smalltalk, Tcl
object method(para)
E
object <- method(para) (6)
E
[ object method ] (7)
Objective-C
->
C++, Perl, PHP
- package scope
.
E, Java, Modula-3, OCaml, Pascal, Python, Ruby
::
C++, merd, Perl, Tcl
'
Ada, Perl
__
Mercury
'
Ada
- record selector
.
Ada, Beta, C, C++, E, OCaml, Pascal, Python
^
Mercury
r { field }
merd
field r
Haskell
->
C, C++
#field r
ML
- equality/inequality
shallow
== !=
C, C++, Java, OCaml, Perl, Tcl
== ~=
Lua
== === !=
PHP
eq ne
Perl, Tcl
deep
== !=
C++, E
== /=
Haskell
= <>
OCaml
- comparison
< > <= >=
C, C++, Haskell, Java, Lua, OCaml, Perl, PHP, Tcl
lt gt le ge
Perl
returns 3 values
a <=> b
E, merd, Perl, Ruby
cmp
Perl, Python
compare
Haskell, OCaml
strcmp
PHP
string compare
Tcl
compareTo
E
- if_then_else
if c then a else b
Haskell, merd, ML, OCaml, Pascal
if c then a else b end
Basic, Lua, Ruby
if (c) a else b
C, C++, Java, PHP
if c: a else: b
Python
if {c} ?then? {a} ?else? {b}
Tcl
if (c): a else: b endif
PHP
if (c) {a} else {b}
C,C++, E, Perl
c a b ifelse
PostScript
c ? a : b
C, C++, Java, Perl, PHP, Ruby
- type annotation
:
E, Eiffel, ML, OCaml
::
Haskell, Mercury
!!
merd
- type cast
(t) e
C, C++, Java, PHP
t(e)
Pascal
e :> t
OCaml
- dictionary constructor
[ a => b, c => d ]
E
array( a => b, c => d )
PHP
{ a => b, c => d }
Perl, Ruby
{ a, b, c, d }
Perl, Ruby
{ a: b, c: d }
Python
{ a="b", c="d" }
Lua
<< a b c d >>
PostScript
- range (inclusive .. inclusive)
a .. b
E, merd, Pascal, Perl, Ruby
[ a .. b ]
Haskell
range
PHP, Python
- range (inclusive .. exclusive)
a ..! b
E
- tuple constructor
( a, b, c )
Haskell, merd, ML, OCaml, Prolog, Python
a, b, c
Lua
- dictionary access
a[e]
E, PHP, Python, Ruby
a["e"]
Lua
$a{e}
Perl
$a(e)
Tcl
- throw exception
raise
OCaml, Python
throw
C++, erlang, Java, Scheme
die
Perl
return -code
Tcl
- catch exception
try: a except exn: b
Python
try a with exn -> b
OCaml
try a catch (exn) b
Java
eval
Perl
catch
erlang, Scheme, Tcl
- runtime evaluation
eval
Perl, PHP, Python, Ruby, Scheme, Tcl
dostring("x=a*b")
Lua
- strings
verbatim
'...'
_javascript_, Lua, Perl, PHP, Python, Ruby
"..."
C, C++, Haskell, Java, _javascript_, Lua, OCaml, Pascal, Python, SML
'''...''', """..."""
Python
[[...]]
Lua
<<'MARK' ... MARK
Perl, Ruby, sh
{...{...}...}
Tcl
q(...(...)...), q[...], q{...}, q<...>, q/.../
Perl
%q(...(...)...), %q[...], %q{...}, %q<...>, %q/.../
Ruby
q(...(...)...)
merd
with interpolation
"... $v ..."
Perl, PHP, Tcl
"... {v} ..."
merd
"... #{v} ..."
Ruby
<<MARK ... $v ... MARK
Perl, Ruby, sh
<<<MARK ... $v ... MARK
PHP
[ subst {...{... $v ...}...} ]
Tcl
qq(...(... $v ...)...), qq[...], qq{...}, qq<...>, qq/.../
Perl
%Q(...(... $v ...)...), %Q[...], %Q{...}, %Q<...>, %Q/.../
Perl
qq(...(... {v} ...)...)
merd
- convert something to a string
sprintf
C, C++
show
Haskell
format
Lua
to_s
Ruby
toString
Java
"" + e
E, Java
str
Python
cvs
PostScript
- string concatenation
+
C++, E, Java, _javascript_, merd, Pascal, Python, Ruby
.
Perl, PHP
^
ML, OCaml
||
Cecil
++
Haskell
..
Lua
&
Visual Basic
$a$b
Tcl
- duplicate n times
*
E, Python, Ruby
x
Perl
times
merd
str_repeat
PHP
strrep
Lua
string repeat
Tcl
- upper/lower case character
upcase/downcase
Ruby
uc/lc
Perl
toUpper/toLower
Haskell
toUpperCase/toLowerCase
E, Java
uppercase/lowercase
OCaml
string toupper/string tolower
Tcl
strupper/strlower
Lua
toupper/tolower
C, C++
- uppercase/lowercase string
upcase/downcase
Ruby
toUpperCase/toLowerCase
E, Java
uc/lc
Perl
strtoupper/strtolower
PHP
string toupper/string tolower
Tcl
strupper/strlower
Lua
- ascii to character
chr
Haskell, OCaml, Pascal, Perl, PHP, Python, Ruby
format %c $c
Tcl
toChar
E
strchar
Lua
(char) c
C, C++, Java
- character to ascii
ord
Haskell, Pascal, Perl, PHP, Python
getNumericValue
Java
code
OCaml
s[0]
Ruby
s 0 get
PostScript
scan $s %c
Tcl
toInteger
E
strbyte
Lua
(int) c
C, C++, Java
- list concatenation
+
E, merd, Python, Ruby
@
OCaml
++
Haskell
array_merge
PHP
concat
Tcl
- list flattening (one level depth)
concat
Haskell, Mercury
flatten
OCaml
eval concat
Tcl
- list flattening (recursive)
flatten
Ruby
- list constructor
[ a, b, c ]
E, Haskell, merd, Perl, PostScript, Prolog, Ruby
( a, b, c )
Perl
{ a, b, c }
Lua
[ a ; b ; c ]
OCaml
[ a b c ]
Mozart
'(a b c)
Lisp
list
Lisp, Tcl
- list/array indexing
a[i]
C, C++, E, Java, Lua, merd, Pascal, Perl, PHP, Python, Ruby
!!
Haskell, Mercury
lindex
Tcl
- list cons
:
Haskell
::
OCaml
|
Mozart, Prolog
cons
Lisp
- iterate
each
merd, Ruby
for in
E, Python, Ruby
foreach
Lua, Perl, Tcl
for-each
Scheme
forall
PostScript
iter
OCaml
mapM_
Haskell
- transform
map
Haskell, Mercury, merd, OCaml, Perl, Python, Ruby, Scheme
collect
Ruby
array_map
PHP
[ f x | x <- l ] (11)
Haskell
[ f(x) for x in l ] (11)
Python
- transform two lists in parallel
map2
OCaml
zipWith
Haskell
map
Python, Scheme
- find an element
find
Haskell, merd, OCaml, Ruby, Scheme
detect
Ruby
lsearch
Tcl
- keep elements matching
find_all
OCaml, Ruby
filter
Haskell, Mercury, merd, OCaml, Python, Scheme
grep
Perl
select
Ruby
reject
Ruby
[ x | x <- l, p x ] (11)
Haskell
[ x for x in l if p(x) ] (11)
Python
- f(... f(f(init, e1), e2) ..., en)
foldl
Haskell, Mercury, merd
fold_left
OCaml
fold
Scheme
reduce
CommonLisp, Python
inject
Ruby, Smalltalk
- f(e1, f(e2, ... f(en, init) ...))
foldr
Haskell, Mercury, merd
fold-right
Scheme
fold_right
OCaml
- split a list in 2 based on a predicate
partition
Haskell, merd, OCaml, Scheme
- is an element in the list
member?
merd, Ruby
include?
Ruby
mem
OCaml
member
Scheme
in
Python
in_array
PHP
elem
Haskell, Mercury
- is the predicate true for an element
any
Haskell, Mercury, Scheme
any?
Ruby
exists
OCaml
exists?
merd
- is the predicate true for every element
all
Haskell, Mercury
all?
merd, Ruby
for_all
OCaml
every
Scheme
- smallest/biggest element
min/max
Python, Ruby, Scheme
minimum/maximum
Haskell, Mercury, merd
- list out of a bag
to_a
Ruby
to_list
merd
- list size
size
E, merd, Ruby
length
Haskell, Java, Mercury, OCaml, PostScript, Ruby, Scheme
len
Python
llength
Tcl
getn
Lua
- iterate with index
each_with_index
merd, Ruby
foreach($a as $i => $v
PHP
for i => v in l
E
foreachi
Lua
- sort
sort
E, Haskell, Lua, merd, OCaml, Perl, PHP, Python, Ruby, Scheme
sort_by
merd
sortBy
Haskell
lsort
Tcl
- remove duplicates
uniq
merd, Ruby
nub
Haskell
array_unique
PHP
delete-duplicates
Scheme
lsort -unique
Tcl
- list of couples from 2 lists
combine
OCaml
zip
Haskell, merd, Python, Scheme
- 2 lists from a list of couples
split
OCaml
unzip
Haskell, merd
unzip2
Scheme
- reverse
reverse
Haskell, Mercury, merd, Perl, Python, Ruby, Scheme
rev
OCaml
array_reverse
PHP
- lookup an element in a association list
lookup
Haskell
assoc
OCaml, Ruby, Scheme
- power
**
E, OCaml, Perl, Python, Ruby
^
Haskell, Lua
pow
C, C++, Java, PHP, Python, Tcl
power
Delphi/Kylix
exp
PostScript
- square root / exponential / absolute value
sqrt/exp/abs
C, C++, E, Java, Lua, Pascal, Perl, PHP, Python, Ruby, tcl
sqrt//abs
PostScript
- trigonometry
cos/sin/tan
C, C++, E, Java, Lua, Pascal, PHP, Python, Ruby, Tcl
cos/sin/
Perl, PostScript
- logarithm
log/log10
C, C++, Lua, PHP, Python, Ruby, Tcl
ln/
Pascal
ln/log10
Delphi/Kylix
ln/log
PostScript
log/
E, Java, Perl
- euclidian division (both quotient and modulo)
divmod
Python, Ruby
- modulo
modulo of -3 / 2 is 1
%
Perl, Python, Ruby, Tcl
%%
E
modulo
Ruby
modulo of -3 / 2 is -1
%
C, C++, E, Java, PHP
mod
Lua, Pascal, PostScript
remainder
Ruby
- round/floor/ceil
round/floor/ceil
C, C++, E, Java, Lua, PHP, Python, Ruby, Tcl
round/floor/ceiling
PostScript