if you can't use a variable, then you have to use a literal = 23 // literal int = 34.56 // literal real = "cat" // literal string = {1,2,3} // literal array (Java) = [1,2,3] // literal list (ML) [1,2,3] = 1 :: 2 :: 3 :: [] ["cat", "dog"] = "cat" :: "dog" :: [] [1.2, 3.4, 4.5] = 1.2 :: 3.4 :: [] [] : 'a list double f(int x, double y, String z) { } param1 -> param2 -> param3 -> return type int -> double -> string -> double double f(int x, type h, String z) { h( 5 ) } int -> (string->int) -> (int->int) -> string a b (* ML function application, call a with argument b *) f(((5))) // Java f( ((5)) ) // Java f((((((5)))))) // ML f 5 // ML 3+2 (((((((3))))))+(2)) // unneeded grouping