Прећутно програмирање, такође се назива и тачка без стила, је парадигма програмирања у коме дефиниције функције не идентификују аргументе (или "тачке") на којима раде. Уместо дефиниције само компонује друге функције, међу којима су комбинације које манипулишу аргументима. Прећутно програмирање је од теоријског интереса, јер је строга примена резултата састава у програмима који су добро прилагођени за једнакосна расуђивања.Manuel Alcino Cunha (2005) Point-free Program Calculation То је уједно и природни стил појединих програмских језика, укључујући APL и његово стабло,W. Neville Holmes, ed. (2006) Computers and People као и конкатенативни језик као што је Форт. Упркос овој бази, недостатак аргумената именовања даје тачку без стила репутације као непотребно нејасно, отуда епитет "бесмислен стил."
UNIX скриптирање користи парадигму са цевима.
На пример, низ операција у апликативном језику као следеће: def example(x): y = foo(x) z = bar(y) w = baz(z) return w... пише у тачки без стила, као саставу низ функција, без параметара: def example: baz bar fooКључна идеја у прећутном програмирању је да помогне у раду на одговарајућем нивоу апстракције. То јест, да преведе природне трансформације које је дао currying
у компјутерским функцијама, где лево представља uncurried облик функције и право на curried. CA означава функције од A до C, док A × B означава Декартов производ А и B.
Примери
Функционално програмирање Једноставан пример (у Haskell-у) је програм који узима суму листе. Програмер може дефинисати суму рекурзивно користећи шиљати (види вредност нивоа програмирања) метод као:sum (x:xs) = x + sum xs sum [] = 0 Међутим констатујући ово као износ програмер може да замени са:sum xs = foldr (+) 0 xsОнда није потребан аргумент, тако да може бити замењенsum = foldr (+) 0која је бесплатна тачка
Други пример користи оператор dot:p x y z = f (g x y) zУ наставку Haskell-као псеудо код излаже како смањити дефиницију функције његовог еквивалент бесплатне тачке:p = \x -> \y -> \z -> f (g x y) z = \x -> \y -> f (g x y) = \x -> \y -> (f . (g x)) y = \x -> f . (g x) = \x -> ((.) f) (g x) = ((.) f) . gпа p = ((.) f) . gНа крају, види комплексан пример имагинарне мапе филтер програма који узима листу, примењује функцију за њега, а затим филтрира елементе на основу критеријумаmf criteria operator list = filter criteria (map operator list)Може изразити бесплатну тачкуpipermail каоmf = (. map) . (.) . filter
APL породица У Ј-у, иста врста тачке без кода се јавља у функцији направљеног рачуна просека листе (array) бројева:avg=: +/ % #+/ сумира ставке из низа аутора мапирања (/) збир (+) на низу. % дели суму од броја елемената (#) у низу.
Stack-основа У stack-оријентисаном програмском језику (и oncatenative ones, од којих је већина stack-основа), тачке без методе најчешће се користе. На пример, процедура за израчунавање фибоначијевих бројева може да изгледа овако: /fib { dup dup 1 eq exch 0 eq or not
dup 1 sub fib exch 2 sub fib add } if } def
UNIX скриптирање У UNIX скрипти функције су рачунарски програми који примају податке са стандардног улаза и шаљу резултате на стандардни излаз. На примерsort | uniq -c | sort -rnје прећутно или тачка без састава који враћа тачке својих аргумената и аргумената, у циљу смањења тачака. 'Врста' и 'uniq' су функције, "-c' и '-rn' контролишу функције, али аргументи се не помињу. '|' је оператор композиција.
Види још Комбинацијска логика Concatenativе програмски језик Програмирање на нивоу функција Joy (програмски језик), модеран високо прећутни језик Бесмислена топологија
Референце
Спољашње везе Pure Functions in APL and J Како користити прећутно програмирање у APL налик језику
Категорија:Програмске парадигме