Search code examples
functional-programmingnotation

FP (function programming): notation


The language used here is FP.

I don't understand the difference between the use of <> and [].

For example:

2 : <3,4,5> -> 4

But

+ o [1,2] : <2,3> -> 5

Why is the first sequence written with [] instead of <> ?

Thanks!


Solution

  • The answer to your question is actually in the wiki link you provided. While <...> is used as notation for lists (e.g., <3,4,5> is a list with elements 3, 4, and 5), [...] is just syntax for a functional that is already provided by FP. It is called construction and defined by

    [f1, ..., fn]:x =  <f1:x, ..., fn:x>
    

    If you are familiar with Haskell: it is similar to

    map (\f -> f x) [f1, ..., fn] = [f1 x, ..., fn x]
    

    that is to say, that [...] is some kind of map function, see also Higher order function to apply many functions to one argument.

    In your specific examples

    2:<3, 4, 5> 
    

    selects the second element of the given list, and + o [1, 2]:<2, 3> can be "evaluated" as follows (where o is function composition):

    + o [1, 2]:<2, 3>  => (definition of composition)
    +:([1, 2]:<2, 3>) => (definition of construction)
    +:<1:<2, 3>, 2:<2, 3>> => (select list elements)
    +:<2, 3> => (addition)
    5