폐쇄 . 이 질문은
의견 기반 입니다. 현재 답변을 받고 있지 않습니다.
댓글
답변
둘 다 배우는 것이 좋습니다. Haskell을 먼저 배우고 그다음에 Common Lisp를 배우십시오. Haskell에 대한 나의 경험은 처음에는 정적 타이핑이 제한적인 성가신 것처럼 보였지만 익숙해 지자 대부분의 유형 오류에 논리 오류가 숨어 있다는 것을 알았습니다. 이 시점과 유형에 대해 생각하고 솔루션을 표현하는 수단으로 자신의 유형을 정의하는 방법을 배우는 다음 이정표에 도달하면 “Common Lisp를 사용할 준비가 된 것입니다.
Common을 사용하면 Lisp, Haskell에서 좋아하는 모나드, 커링 및 모든 것을 추가 할 수 있지만 Frank Shearar가 언급 한 것과 같은 다중 상속, 다중 디스패치가있는 일반 함수 및 고급 예외 처리 시스템도 얻을 수 있습니다.
그런 이유는 무엇입니까? 먼저 Common Lisp를 배우는 것이 아니라 절차 적 및 OOP 배경에서 왔기 때문에 독점적으로 사용해야 할 때까지 함수형 프로그래밍을 실제로 이해하지 못했습니다. 함수형 프로그래밍이 편 해지면 Common Lisp가 제공하는 나머지 도구를 추가하고 현재 작업에 가장 적합한 도구를 사용할 수 있습니다.
댓글
답변
그렇습니다.
Haskell은 가장 순수한 적어도 내가 아는 한, 스몰 토크가 가장 순수한 OO를 가르치는 것처럼 말입니다. (나는 OO와 FP가 결혼 할 수 없다는 것을 암시하는 것이 아니라이 두 언어가 “보석”언어이기 때문에 이것을 언급합니다. 핵심 아이디어를 극단으로 가져 왔습니다.)
Lisp는 실제로 언어 계열이므로 Common Lisp에 대해 이야기하겠습니다. Common Lisp는 제가 사용하는 특정 계열이기 때문입니다.
Lisp는 여전히 많은 것을 가르쳐 줄 것입니다.
- 다양한 패러다임이므로 dsimcha가 지적한대로 FP를 다른 패러다임과 통합하는 방법
- Lisp는 매크로를 통해 “코드는 데이터, 데이터는 코드”임을 알려줍니다.
- CLOS는 작동하는 다중 상속과 일반 기능을 갖춘 매우 흥미로운 OO 브랜드입니다.
Answer
Haskell 및 Lisp 완전히 다른 두 동물입니다.
Haskell은 일종의 “상아탑에서 순수한 기능적 프로그래밍”입니다.
Lisp는 일종의 “코드는 데이터입니다 / 데이터는 코드입니다 / 자신 만의 언어 구조를 만듭니다”. 상상할 수있는 모든 방식으로 코드를 조작 할 수 있습니다.
매우 다릅니다. 둘 다 “기능적 프로그래밍”측면을 공유하지만, 그 차이에 비해 정말 작은 공통점입니다. 시도해 보면 얼마나 다른지 알 수 있습니다!
댓글
답변
나중에 Lisp를 배우면 사용 가능한 가장 고급 텍스트 편집기 인 Emacs를 사용자 정의 할 수 있습니다. Haskell에서는 그렇게 할 수 없습니다.
댓글
Answer
Lisp를 배우면서 얻은 주요 이점은 FP를 실제 환경에 통합하는 방법을 배우는 것입니다. -순결을 강조하는 학문적 언어의 맥락에서 배우는 것이 아니라 세계 지향적 인 다중 패러다임 언어입니다.
댓글
Answer
저는 또한 C / C ++ / Python 배경 출신이며 지난 몇 년 동안 FP를 몇 번 사용해 보았습니다. 처음에 나는 Haskell을 보았고 그것의 머리 나 꼬리를 만들 수 없었습니다. 그리고 나서 Ocaml을 시도했지만 그 이상을 얻지 못했습니다. 마침내 저는 Scala에 대한 좋은 소식을 듣기 시작했고 시도해 보았고 그것이 저에게 아주 잘 맞았다는 것을 알게되었습니다 (과거에 Java도 약간 수행했습니다). 프로젝트 오일러 문제), Haskell이 훨씬 더 의미가있는 것 같습니다. 사실 저는 Haskell에 관한 몇 권의 책을 주문했고 다시 시도해보고 싶습니다. 이것은 대부분 Scalaz의 존재에 의해 동기가 부여되었습니다.
그래서 저는 다중 패러다임 언어 (예 : Scala, 그러나 Lisp는 아마도 법안에도 맞을 것입니다) FP에 좋은 방법입니다. 하지만 Haskell에 대해 만족 스러우 셨다면 (저는 그렇지 않았습니다) 그렇게하세요.
댓글
답변
원래 C / C ++ / Ruby 배경에서 왔습니다. 가능한 한 Ruby에서 FP 개념을 사용했습니다. 상태가 내 뇌를 조금 다쳤습니다. 어느 날 제 친구 중 한 명이 저에게 전화를 걸어 하스켈로 무언가를 써달라고 요청했습니다. 나는 빨리 언어를 배웠고 효과가있는 것을 함께 던졌습니다. 아름답지는 않았지만 효과가있었습니다.
사용할 것이 없기 때문에 Haskell에서 한 달간 쉬었습니다. 하지만 나만의 블로그 소프트웨어를 작성하기로 결정했을 때 Haskell ( https://symer.io )을 사용했습니다. Haskell은 문제를 여러 부분으로 나누고 입력에 따라 다르게 구현할 수 있기 때문에 정말 멋집니다. Haskell은 또한 값의 지능적인 복싱을 통해 실패를 매우 잘 처리합니다. 이 상자로 작업 할 수있는 도구가 너무 많아서 존재한다는 사실을 잊을 수 있습니다.
lisp (Scheme)에 대한 제 경험은 완전히 부정적이었습니다. 언어에는 이러한 지능적이고 단순한 도구가 부족했을뿐만 아니라 Ruby 또는 JavaScript만큼 위험 할 정도로 느슨해졌습니다. 끔찍한 경험이었고 Ruby 또는 Python 외에는 새로운 것을 제공하지 않습니다.
C ++는 메모리 관리 외에는 Haskell에게 촛불을 붙들 수 없습니다. Haskell은 (빠르지는 않더라도) 훨씬 빠르고, 훨씬 더 간결하며 훨씬 더 안전합니다. 그러나 Haskell의 안전은 결코 들어오지 않습니다.
TL; TR Haskell은 신선한 공기를 마시 며 Lisp는 약간 더 기능적인 Ruby입니다.