Delvis tillämpning

Partiell tillämpning  - förmågan i ett antal programmeringsspråk att fixa en del av argumenten för en multi-place funktion och skapa en annan funktion av mindre aritet . Om du till exempel har en trippelfunktion kan du fixa ("binda") det första argumentet , och bygga en binär funktion så att för alla .

I programmeringspraktiken används partiell tillämpning på grund av att funktioner som erhålls genom att fixa ett visst antal argument ofta är användbara. Till exempel har många programmeringsspråk en funktion eller en inkrementoperator (vilket är en fixering av en som ett av argumenten för dubbeltillägg) eller en värdeomvändningsfunktion. Partiell applikation kan implementeras i nästan alla programmeringsspråk som har förmågan att definiera multi-place-funktioner. Ett antal språk har specialiserade konstruktioner för partiell tillämpning, till exempel har standardbiblioteket C++ en funktion bindsom tar ett funktionsnamn och argument som indata, och returnerar ett funktionsobjekt  - resultatet av partiell tillämpning av den godkända uppsättningen argument till funktionen.

I ett antal funktionella programmeringsspråk , såsom ML och Haskell , deklareras funktioner som standard i en curry- form, det vill säga konceptet med multi-place-funktioner implementeras med hjälp av högre ordningens unära funktioner ; under dessa förhållanden är en partiell applikation (på dessa språk kallad en sektion av operatorer) varje överföring av ett ofullständigt antal argument [1] .

I programmeringsspråk med förstklassiga funktioner kan du definiera curry, uncurryoch papply, för att implementera currying och partiell applikation direkt (med förhållandet mellan dem enligt följande: curry papply = curry). Men detta tillvägagångssätt kan leda till längre programkörningstid på grund av skapandet av ytterligare stängningar , medan Haskell låter dig använda mer effektiva knep [2] .

Anteckningar

  1. Denis Moskvin. Kompositionssektioner som ett meningslöst stilverktyg  // Funktionell programmering. - 2010. - Nr 4 . - S. 89-104 .
  2. Marlow - Peyton-Jones, 2004 .

Litteratur