2013-04-10 18 views
7

W funkcjonalnym paradygmacie funkcja jest podstawową "strukturą kontrolną". Na przykład operator + jest również traktowany jako funkcja i można je przekazywać jak każdy inny "obiekt". Zastanawiam się, że gdybym musiał zaimplementować język funkcyjny zabawki, czy zaimplementowałem proste funkcje jako prawdziwe funkcje (tj. Przetłumaczyć + na rutynową procedurę wywoływania) lub przetłumaczyć je na zwykłe instrukcje, które zostałyby wstawione "w wierszu" do przetłumaczonego kodu. Ale czy dzięki drugiej strategii będę w stanie przekazać je i zastosować je częściowo jak w haskell? Jakie są twoje przemyślenia na temat implementacji/tłumaczenia funkcji jako głównej idei w języku funkcjonalnym?Jak zaimplementować funkcjonalny język programowania?

+0

Coś takiego, wyobrażam sobie: http://mitpress.mit.edu/sicp/ –

+0

Druga strategia jest znana jako defunctionalization: http://en.wikipedia.org/wiki/Defunctionalization –

+0

Jeśli chcesz Aby wdrożyć zabawkowy język funkcjonalny od podstaw, polecam: skorzystaj z porady tutaj: * http://research.microsoft.com/en-us/um/people/simonpj/Papers/pj-lester-book/ Jeśli chcesz ponownie wykorzystaj czas pracy Haskella, który polecam tutaj: * http://www.grabmueller.de/martin/www/pub/Transformers.en.html –

Odpowiedz

0

Mogę polecić książkę PJL. Z jego pomocą napisałem kompilator (w latach 1989-90, w Prologu), a książka jest bardzo dobrym wprowadzeniem do tematu.

Może być datowany (napisany w 1987 r., 30 lat temu), ale nadal bardzo dobrze opisuje podstawy. Jest jednak całkowicie skoncentrowany na leniwych językach, takich jak Haskell. W tym czasie Haskell nie istniał, a książka wykorzystuje LML lub Mirandę, poprzedni język, ale języki są bardzo bliskie.

Powiązane problemy