Programmation tacite ('point-free style')

La programmation tacite est une manière d'écrire, aussi appelée 'point-free style', en omettant un ou plusieurs argument(s) dans le corps de la fonction. Voyons un exemple.

Voilà une fonction qui ajoute 10 à un nombre :

add10 : Int -> Int
add10 x =
    10 + x

On peut la réécrire en utilisant + en notation préfixée (dite 'notation polonaise') :

add10 : Int -> Int
add10 x =
    (+) 10 x

Dans ce cas, l'argument x n'est pas strictement nécessaire, et la fonction pourrait être réécrite comme ceci :

add10 : Int -> Int
add10 =
    (+) 10

On voit que le x manque à la fois dans l'argument d'entrée de add10 et dans l'argument passé à +. add10 reste toujours une fonction qui attend un entier pour calculer un résultat. Cette manière d'écrire est appelée programmation tacite ou point-free style.

Plus d'exemples

select : Int -> List Int -> List Int 
select num list =
    List.filter (\x -> x < num) list

select 4 [1, 2, 3, 4, 5] == [1, 2, 3]

est équivalent à :

select : Int -> List Int -> List Int 
select num =
    List.filter (\x -> x < num)

select 4 [1, 2, 3, 4, 5] == [1, 2, 3]

process : List Int -> List Int 
process list =
    reverse list |> drop 3

est équivalent à :

process : List Int -> List Int 
process =
    reverse >> drop 3

results matching ""

    No results matching ""