В функциональных языках программирования (ML, Haskell, F #, OCAML) любая функция имеет только один аргумент - многопараметрические функции представлены передачей кортежей или Curry . Таким образом, нет необходимости для функции заключать параметр в скобки.
Пример № 1:
inc x = x + 1
res = inc 42
Пример № 2:
sum a b = a + b
res = sum 1 2
В # 2 вы передаете 1
в sum
и затем вызываете полученную функцию с помощью 2
(Curry)
Кроме того, вы можете использовать такие механизмы, как композиция функций, конвейеры или оператор $ ( стиль без точек ).
Просто сравните два примера.
a = f(g x)
b = f $ g x
print(square(parse "Hello"))
"Hello" |> parse |> square |> print
Другим способом сокращения скобок в других языках является введение методов расширения (аналогично конвейерам) или оператора стрелки.
Сравнить:
ToString(Parse(42))
"42".Parse().ToString()
(*(*SomePointer).SomeMember).Invoke();
SomePointer->SomeMember->Invoke();
Ruby и Perl позволяют вызывать подпрограммы без скобок, языки в стиле VBC (Visual Basic, VBScript) тоже делают это.
Lisp / Scheme также не нуждаются в скобках для своих вызовов функций (но в любом случае есть много скобок ^^)