10

Czy istnieje termin opisujący funkcję, która nie przyjmuje argumentów w sposób bardziej zwięzły niż "funkcja, która nie przyjmuje argumentów"? (W ten sam sposób, że np. "Funkcja wyższego rzędu" oznacza "funkcję, która przyjmuje funkcje jako argumenty lub zwraca funkcję")Co to jest funkcja, która nie wywołuje żadnych argumentów?

Naturalnie myślę o "pustce", ale myślę też o efektach ubocznych, gdy widzę "pustkę" ". Sytuacja Mam na myśli to rodzaj znaleźć w tej dyskusji constantly:

What is this functional "pattern" called?

gdzie można utworzyć zamknięcie, które ma żadnych argumentów, nie ma skutków ubocznych, ale wciąż robi coś ciekawego.

Odpowiedz

16

sygnalnych funkcja, zazwyczaj: http://en.wikipedia.org/wiki/Arity

, czy funkcja ma skutków ubocznych jest prostopadła do ilu argumentów ma, więc w języku, w którym żadna funkcja nie zawsze ma skutki uboczne, nie potrzebują bardziej szczegółowy termin. W językach z efektami ubocznymi, przypuszczam, że nazwałbyś to "funkcją bez skutków ubocznych" lub "czystą" funkcją nullary.

A potem z (na przykład) zapamiętywaniem, funkcja może być logicznie czysta, nawet jeśli wiesz, że za kulisami, ma ona efekty uboczne.

+0

Hah! Jak to często bywa, gdy dostaję odpowiedź tutaj, teraz czuję się jak totalny dork. Z tego powodu znam "unary", "binary" itd., Ale nie nawiązałem połączenia. stackoverflow jest o wiele lepszy niż Google (z którego zacząłem) w takich sytuacjach! – jtolle

3

A nullary lub funkcja niladic.

       

+0

Dziękuję również. Nigdy nie słyszałem słowa "niladic". – jtolle

4
+0

Dzięki. Nie wiedziałem, że "thunk" to inna nazwa tego. Ale "nullary" jest ogólnym terminem, którego szukałem. – jtolle

+0

To znaczy, powinienem powiedzieć, że znałem "thunk" w terminach opóźnionego obliczania, ale nie jako synonim "nullary". – jtolle