2009-08-12 9 views
11

소스 코드를 사용할 수있게 잘 설계된 기능적 (객체 지향적 인 것과 반대) 웹 응용 프로그램의 예로는 무엇이 있습니까? 나는 현재 Hacker Newssource을 연구 중이지만 clojure에 이상적이지 않은 몇 가지 예를보고 싶습니다.잘 디자인 된 기능적 웹 앱의 소스 코드는 무엇입니까?

MVC의 경우 학습 할 많은 Rails 및 PHP 응용 프로그램, 프레임 워크 및 자습서가 있습니다. 기능 프로그래밍을 위해 무엇이 있습니까?

+0

아크와 Clojure의 거의 함수형 언어이다. Happs를보십시오. http://happs.org/ – jrockway

+0

"continuations based web applications"을 검색하면 흥미로운 결과를 얻을 수 있습니다. – fortran

+0

흥미로운 프레임 워크 및 기사 - 감사합니다! 이러한 아이디어를 실제로 구현할 수있는 링크가 있습니까? 예를 들어, Haskell의 매장 시스템, CMS 또는 간단한 블로그 소프트웨어를 기반으로 한 연속성?나는 어딘가에 살아있는 입증 된 솔루션으로부터 배우는 것을 좋아합니다. – Lorenz

답변

7

있다 :

그 목록은 충분하다 (스몰 토크) 유지 당신은 바쁜 특성을 가진 함수형 언어의 샘플을 제공합니다 :

  • Clojure : multi-paradigm ?, flexible? 그것은 순수한 기능 언어가 아니며, 기능적 스타일로 프로그램하는 것이 바람직하지만, 꼭 필요한 것은 아닙니다. Java interop을 통해 자바 스타일의 OOP를 작성하거나 멀티 메소드를 사용하여 추상화 할 수 있습니다. 거기에 많은 유연성이 있지만 일반적인 lisp가 사용되는 방식에서 "유연한"것인지 "다중 패러다임"인지를 말하기는 아직 이르지만 말입니다. 부분적으로는 동시성을 쉽게 처리하는 혀짤배기로 설계되었으므로 실제로 많은 대상에서 슛하게되므로 유연하거나 multiparadigm으로 지정됩니다.
  • Scheme : Clojure보다 순수한 함수 언어에 가까워 질수록 프로그래머는 Clojure보다 기능적 스타일로 조금 더 강요하게된다.
  • Erlang : 안정적인 동시성을 위해 기능 프로그래밍이 구현되었습니다. Erlyweb은 동시성이 높도록 설계된 플랫폼을 기반으로합니다.
  • 스몰 토크 : 고도로 객체 지향 프로그래밍 (함수 구조조차도 객체 시스템 내부의 객체이며 구문 구조는 아닙니다).

웹 응용 프로그램이 "모든 비용"으로 기능하는 언어로 어떻게 나타나는지 보려면 jrockway의 제안을 살펴보십시오. 당신이 순수 함수형 언어에 구현 된 실제 오픈 소스 프로젝트를 찾고 있다면

+0

PLT Scheme 웹 서버에 대한 소개는 http://docs.plt-scheme.org/continue/에서 확인하십시오. –

+0

PLT Scheme Webserver와 Seaside가 여기에 나열된 이유를 설명해주십시오. 구현이 함수 프로그래밍의 좋은 예입니까? –

+0

@ Vijay는 둘 다 연속을 사용하여 웹 서버와 클라이언트 간의 상호 작용을 제어합니다. 이것은 웹 프로그래밍에 대한 기능적 접근의 특징입니다. 이에 대한 한 가지 설명은 Yahoo! Continuation 기반 웹 서버에 대한 특허 : http://www.google.com/patents?id=WE8GAAAAEBAJ&printsec=abstract&zoom=4&source=gbs_overview_r&cad=0#v=onepage&q=&f=false이 특허는 Paul Graham이 작성한 Yahoo!가되다. 90 년대 중반에 Lisp에 저장합니다. 또한 continuation 기반 웹 서버에 대한 자세한 정보는 원래 질문에 대한 fortran의 의견을 확인하십시오. – Pinochle

2

Weblocks는 Seaside에서 영감을 얻은 입증 된 객체 지향 기능 프레임 워크입니다. 그것은 커먼 리스프로 작성

, 그리고 두 가지 기본 예제 (weblocks-데모, 간단한 블로그) 여기에서 찾을 수 있습니다 : http://bitbucket.org/S11001001/weblocks-dev/src/tip/examples/

+0

하지만 작동하지 않습니다. 위의 질문을 참조하십시오. –