Share to: share facebook share twitter share wa share telegram print page

Applicazione parziale

Disambiguazione – Se stai cercando l'accezione del termine come contrapposizione di funzione totale, vedi funzione parziale.

In matematica e informatica si definisce applicazione parziale di una funzione l'applicazione di una funzione a una parte dei suoi argomenti.

A rigore questa operazione dovrebbe essere "proibita", in quanto una funzione per essere definita deve essere applicata a tutti i suoi argomenti. In realtà ci sono diversi linguaggi di programmazione che consentono di farlo, restituendo un risultato utilizzabile, e anche nell'ambito della matematica è possibile dare un senso a un'espressione in cui una funzione sia applicata a una parte dei suoi argomenti.

Approccio intuitivo con degli esempi

Prima ancora di fornire la definizione formale, un semplice esempio può mostrare che il significato da dare a un'applicazione parziale è piuttosto intuitivo, al di là delle complicazioni che si pongono quando si voglia formalizzare tale intuizione.

Si supponga di avere una funzione moltiplica che moltiplica due numeri interi, cioè che a ogni coppia di interi fa corrispondere il loro prodotto:

Per definizione, se questa funzione viene applicata a due numeri restituisce un numero. Per esempio . Ma si supponga di avere un'espressione come questa: (dove il punto indica l'assenza di un argomento), o un'espressione come questa: , cioè un'espressione in cui sia presente uno solo dei due argomenti. Quale significato si potrebbe dare a questa espressione?

Se si usa un'espressione come questa in certi linguaggi di programmazione che consentono di farlo, il programma restituisce una funzione. Intuitivamente si capisce che la funzione che viene restituita è una funzione che "aspetta" il secondo argomento, per poter completare l'operazione. Così la funzione che si è scritta come o come prende un argomento e restituisce il prodotto di tale argomento con il numero 2:

Intuitivamente la cosa è talmente banale da sembrare quasi un'inutile complicazione formale, nel senso che sembra non esserci bisogno di introdurre ulteriori definizioni per poter porre:

In realtà però c'è una notevole differenza concettuale, in quanto al primo membro della equazione compare una funzione di due argomenti, cioè moltiplica, applicata a due argomenti, mentre al secondo membro della equazione compare una funzione di un argomento, cioè , applicata ad un argomento. Tornando all'esempio di poco fa, è una funzione, che potremmo definire doppio:

la quale prende come argomento un numero e restituisce il doppio di quel numero.

Inoltre, poiché per m fissato moltiplica(m) è una funzione, allora nel secondo membro della equazione moltiplica deve essere considerata una funzione di un argomento, che per ogni intero m restituisce una funzione da a . Una tale funzione, che prende un "numero" (in senso generico) e restituisce una funzione è detta anche funzionale. Pertanto quando si applica una funzione a una sola parte dei suoi argomenti tale funzione viene implicitamente ridefinita come il funzionale "naturalmente associato" alla funzione stessa. Anzi, più precisamente come uno dei funzionali associabili, poiché per ogni scelta degli argomenti su cui applicare parzialmente la funzione si ha un diverso funzionale associato.

Senza appesantire la notazione definendo un diverso funzionale per ogni possibile combinazione parziale degli argomenti, si può lasciare che sia il contesto a determinarlo, usando una notazione sufficiente a chiarirlo. Così se si scrive moltiplica(2) è chiaro dal contesto che si sta usando moltiplica come un funzionale che associa ad ogni numero una funzione, dopodiché moltiplica(2) è in particolare la funzione doppio, mentre moltiplica(3) sarebbe la funzione triplo eccetera.

Come si diceva sopra, alcuni linguaggi di programmazione implementano questa "sensibilità al contesto", per cui quando una funzione viene applicata a una parte soltanto dei propri argomenti il linguaggio tratta la funzione come funzionale e restituisce una funzione, la quale poi può essere applicata agli argomenti restanti, i quali a loro volta possono essere presi tutti assieme o parzialmente. Altri linguaggi invece richiedono che prima la funzione venga trasformata in un funzionale, e che poi questo funzionale venga applicato a una parte degli argomenti. E siccome in linea di principio ci sono tanti funzionali quante sono le combinazioni possibili degli argomenti, per non appesantire la notazione di solito si compie una scelta "radicale", definendo un operatore che trasforma una funzione in un funzionale che prende gli argomenti "uno alla volta" a cominciare dal primo.

Tale operatore è detto curry, e l'operazione corrispondente è detta currying, in onore di Haskell Curry, che ne studiò a lungo l'implementazione. In tali linguaggi di programmazione di fatto l'applicazione parziale di una funzione ai suoi argomenti torna ad essere "proibita"; se ad esempio si ha una funzione f di tre argomenti, quando non la si voglia applicare subito a tutti e tre gli argomenti, scrivendo f(x,y,z), bisogna prima ridurre la funzione f al funzionale curry(f), e poi applicare tale funzionale al primo argomento, ottenendo il funzionale curry(f)(x), che applicato al secondo argomento dà la funzione curry(f)(x)(y), la quale applicata al terzo argomento restituisce il numero curry(f)(x)(y)(z). Questo operatore è sempre implicito nel lambda calcolo, dove ogni funzione di più argomenti si considera un funzionale e gli argomenti vengono presi appunto "uno alla volta" a cominciare dal primo dando come risultato altri funzionali o (arrivati al penultimo argomento) una funzione.

Definizione formale

Dati tre insiemi A, B e C (eventualmente coincidenti) e una funzione

ad essa si possono associare in modo "naturale" due funzionali e definiti in questo modo:

Se aumenta il numero delle variabili la notazione si fa ancora più pesante, e bisogna considerare dei "funzionali a valori funzionali" cioè dei funzionali che applicati ad un loro argomento restituiscono a loro volta un funzionale.

Voci correlate

Implementazioni specifiche per ogni linguaggio

  • ALGOL 68G
  • Currying in C (PDF), su asg.unige.ch. URL consultato il 7 dicembre 2010 (archiviato dall'url originale il 25 dicembre 2010).
  • Currying in CSharp, Alternative (faster) method
  • Currying in Delphi 2009, su blogs.teamb.com. URL consultato il 7 dicembre 2010 (archiviato dall'url originale il 27 novembre 2010).
  • Currying in Java [collegamento interrotto], su dis.4chan.org.
  • Currying in JavaScript, su flesler.blogspot.com.
  • Currying in Lua, su tinylittlelife.org. URL consultato il 7 dicembre 2010 (archiviato dall'url originale il 5 novembre 2010).
  • Currying in Perl, su perldesignpatterns.com. URL consultato il 7 dicembre 2010 (archiviato dall'url originale il 28 febbraio 2011).
  • Currying in PHP, su zaemis.blogspot.com.
  • Partial Application in PowerShell, su nivot.org. URL consultato il 7 dicembre 2010 (archiviato dall'url originale il 14 gennaio 2011).
  • Currying in Ruby, su moonbase.rydia.net. URL consultato il 7 dicembre 2010 (archiviato dall'url originale il 12 luglio 2010).
  • Currying in Scala, su scala-lang.org.
  • Implicit currying in Scheme, su engr.uconn.edu. URL consultato il 19 luglio 2008 (archiviato dall'url originale il 19 luglio 2008).
  • Currying in Smalltalk, su blog.3plus4.org. URL consultato il 7 dicembre 2010 (archiviato dall'url originale il 19 luglio 2008).
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica

Read other articles:

Canada's role in the Afghanistan War Part of a series on theMilitary history of Canada Military history of... Army Navy Air Force Crown and Forces Militia Colonial New France Acadia Nova Scotia Conflicts Beaver Wars Anglo-French War (1627–29) Acadian Civil War Anglo-Dutch Wars King William's War Queen Anne's War Father Rale's War King George's War Father Le Loutre's War Seven Years' War American Revolutionary War French Revolutionary Wars War of 1812 Pemmican War Rebellions of 1837–1838 F...

 

SpringvaleStasiun komuter PTVLokasiSpringvale Road, SpringvaleMelbourne, VictoriaAustraliaPemilikVicTrackPengelolaMetro TrainsJalur  Cranbourne  Pakenham Jumlah peron2Jumlah jalur2KonstruksiJenis strukturCuttingKedalaman65 meter (213 kaki)Parkir261Akses difabelYaInformasi lainZona tarifMyki Zona 2Situs webPublic Transport VictoriaSejarahDibangun kembali22 April 2014Operasi layanan Stasiun sebelumnya   Metro Trains   Stasiun berikutnya Westallmenuju Flinders Stree...

 

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Gunung Kelimutu – berita · surat kabar · buku · cendekiawan · JSTOR Gunung KelimutuDanau Kelimutu di Gunung kelimutuTitik tertinggiKetinggian1.639 m (5.377 kaki)Koordinat8°46′08″S 121°48′48″E&#...

Grattan PlcTypeClothingIndustryClothing catalogueFounded1912[1] as Grattan Stores 1995 as Grattan PlcFounderJohn Enrico Fattorini[2]HeadquartersBradford[3], UKArea servedUK, IrelandKey peopleAnn Steer (CEO)ProductsClothing and householdOwnerOtto GroupWebsitehttp://www.grattan.co.uk/ Grattan is an English catalogue clothing retailer based in Bradford, England with 18 stores and 2 main catalogues and a number of specialty catalogues. Grattan has approximately 2,600 emplo...

 

Jessé Freire Jessé Freire Vereador de Natal Período 1951–1955 Deputado estadual do Rio Grande do Norte Período 1955–1959 Deputado federal do Rio Grande do Norte Período 1959–1971 Senador do Rio Grande do Norte Período 1971–1980 Antecessor(a) Manoel Vilaça Sucessor(a) Martins Filho Dados pessoais Nascimento 19 de novembro de 1918 Macaíba, RN Morte 13 de outubro de 1980 (61 anos) Rio de Janeiro, RJ Alma mater Universidade Federal de Alagoas Cônjuge Elza Freire Partido...

 

Swedish drummer Tomas HaakeHaake in 2005Background informationBorn (1971-07-13) 13 July 1971 (age 52)Örnsköldsvik, SwedenGenresProgressive metal, extreme metal, djent, avant-garde metal, groove metal, thrash metalOccupation(s)DrummerYears active1987–presentLabelsNuclear BlastMusical artist Tomas Nils Haake[1] (born 13 July 1971) is a Swedish musician known for being the drummer of the extreme metal band Meshuggah. Known for his polymeters and technical ability,[2] Haa...

أنور إبراهيم معلومات شخصية الميلاد 10 يونيو 1999 (العمر 24 سنة)كوتا بهارو  الطول 1.69 م (5 قدم 6 1⁄2 بوصة) مركز اللعب مدافع الجنسية ماليزيا  معلومات النادي النادي الحالي كوالالمبور سيتي الرقم 25 مسيرة الشباب سنوات فريق Bukit Jalil Sports School [الإنجليزية]‏ فيلدا يونايت�...

 

Glass sphere said to ward off evil A witch ball on display at Whitby Museum A witch ball is a hollow sphere of glass. Historically, witch balls were hung in cottage windows in 17th and 18th century England to ward off evil spirits, witches, evil spells, ill fortune and bad spirits.[1] The witch ball is still today used extensively[citation needed] throughout Sussex, England and continues to hold great superstition with regard to warding off evil spirits in the English counties...

 

Species of Old World monkey Siberut macaque[1] Macaca siberu Conservation status Endangered (IUCN 3.1)[2] Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Mammalia Order: Primates Suborder: Haplorhini Infraorder: Simiiformes Family: Cercopithecidae Genus: Macaca Species: M. siberu Binomial name Macaca siberuFuentes & Olson, 1995 Siberut Macaque range The Siberut macaque (Macaca siberu) is a vulnerable species of macaque, which...

Former NASCAR race Pepsi 420NASCAR Winston Cup SeriesVenueFairgrounds SpeedwayLocationNashville, TennesseeCorporate sponsorPepsiFirst race1958Last race1984Distance250.32 miles (402.9 km)Laps420Previous namesNashville 200 (1958)Nashville 300 (1959)Nashville 400 (1960, 1963–1969)Nashville 500 (1961–1962)Nashville 420 (1970–1978)Busch Nashville 420 (1979–1983)Pepsi 420 (1984) The Pepsi 420 was a NASCAR Winston Cup Series stock car race held at Fairgrounds Speedway from 1958 to 1984....

 

This article's factual accuracy may be compromised due to out-of-date information. The reason given is: he resigned in November 2021 from at least some of the roles that are listed here in the present tense. Please help update this article to reflect recent events or newly available information. (November 2021) איתי פנקס מרצה Etai J. Pinkas Arad (born 1973) was a leader of the Israeli LGBT community. Pinkas served as chairman of the national LGBT association in Israel and was a me...

 

Kosovar Albanian politician This biography of a living person relies on a single source. You can help by adding reliable sources to this article. Contentious material about living people that is unsourced or poorly sourced must be removed immediately. (September 2022) (Learn how and when to remove this template message) Faton PeciOfficial portrait, 2021Ministry of Agriculture, Forestry and Rural DevelopmentIncumbentAssumed office 22 March 2021PresidentGlauk Konjufca (acting)Vjosa OsmaniPr...

British monthly film magazine This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Empire magazine – news · newspapers · books · scholar · JSTOR (May 2018) (Learn how and when to remove this template message) EmpireJuly 2011 cover of Empire, featuring (left to right) Emma Watson, Daniel Radcliffe and Rupert ...

 

Town in Baden-Württemberg, GermanyBruchsal Town FlagCoat of armsLocation of Bruchsal within Karlsruhe district Bruchsal Show map of GermanyBruchsal Show map of Baden-WürttembergCoordinates: 49°08′N 8°36′E / 49.133°N 8.600°E / 49.133; 8.600CountryGermanyStateBaden-WürttembergAdmin. regionKarlsruhe DistrictKarlsruhe Subdivisions6Government • Mayor (2017–25) Cornelia Petzold-Schick[1]Area • Total93.02 km2 (35.92 sq...

 

This article is about the purported secret committee. For other uses, see Majestic 12 (disambiguation). Purported organization that appears in UFO conspiracy theories Majestic 12, also known as MJ-12 for short, is a purported organization that appears in UFO conspiracy theories. The organization is claimed to be the code name of an alleged secret committee of scientists, military leaders, and government officials, formed in 1947 by an executive order by U.S. President Harry S. Truman to facil...

Peruvian politician This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Isaac Serna – news · newspapers · books · scholar · JSTOR (June 2020) (Learn how and when to remove this template message) In ...

 

American professional soccer player Christen Press Press with the USWNTPersonal informationFull name Christen Annemarie Press[1]Date of birth (1988-12-29) December 29, 1988 (age 34)Place of birth Los Angeles, CaliforniaHeight 5 ft 7 in (1.70 m)Position(s) ForwardTeam informationCurrent team Angel CityNumber 23Youth career Slammers FC2003–2007 Chadwick DolphinsCollege careerYears Team Apps (Gls)2007–2010 Stanford Cardinal 98 (71)Senior career*Years Team Apps (Gl...

 

Japanese clan In this Japanese name, the surname is Nagao. Nagao長尾The emblem (mon) of the Nagao clanHome provinceSagami provinceParent house Taira clanTitlesVariousFounderNagao KagehiroRuled until16th century (merged with Uesugi clan)Cadet branchesUesugi clan (clan merger) Nagao clan (長尾氏, Nagao-shi) was a Japanese samurai clan.[1] History Kasugayama castle The Nagao clan descend from Taira no Yoshifumi, of the Kammu Heishi (Taira clan), and from the Emperor Kammu (735–806...

Australian rules footballer Australian rules footballer Katie Lynch Lynch with Collingwood in February 2019Personal informationDate of birth (2000-04-06) 6 April 2000 (age 23)Original team(s) Oakleigh Chargers (TAC Cup)Draft No. 11, 2018 AFL Women's draftDebut Round 2, 2019, Collingwood vs. Melbourne, at Victoria ParkHeight 179 cm (5 ft 10 in)Position(s) Midfielder / DefenderClub informationCurrent club Western BulldogsNumber 10Playing career1Years Club Games (Go...

 

Early German Helicopter Gigant Role HelicopterType of aircraft National origin Germany Designer Anton Flettner First flight 1932 (tethered) Number built 1 The Flettner Gigant was an experimental helicopter built in Germany during the early 1930s.[1] Design and development Anton Flettner was an early rotary-wing pioneer in Germany, he developed a torqueless rotor by powering it with small engines fixed directly to the blades driving propellers. this arrangement drove the rotor without ...

 
Kembali kehalaman sebelumnya