유명한 SICP를 읽을 때 저자들은 3 장에서 Scheme에 과제 진술을 소개하는 것을 꺼려하는 것으로 나타났습니다. 나는 그들이 왜 그렇게 느끼는지 텍스트와 종류를 읽었습니다.
Scheme은 내가 아는 첫 번째 기능 프로그래밍 언어이기 때문에 과제없이 Scheme이 아닌 일부 기능 프로그래밍 언어가 있다는 사실에 놀랐습니다.
책이 제공하는 예, 예를 사용하십시오 bank account
. 할당 문이 없으면 어떻게 할 수 있습니까? balance
변수 를 변경하는 방법은 무엇입니까? 나는 거기에 소위 순수한 기능적 언어가 있다는 것을 알고 있기 때문에 묻습니다. 그리고 튜링 완전 이론에 따르면, 이것도 역시 가능합니다.
나는 C, Java, Python을 배웠고 내가 작성한 모든 프로그램에서 과제를 많이 사용했습니다. 정말 눈에 띄는 경험입니다. 나는 함수형 프로그래밍 언어에서 할당을 피하는 방법과 이러한 언어에 미치는 영향에 대해 간단히 설명 할 수 있기를 바랍니다.
위에서 언급 한 예는 다음과 같습니다.
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds")))
이로 변경 balance
되었습니다 set!
. 나에게 그것은 클래스 멤버를 변경하는 클래스 메소드와 매우 비슷해 보인다 balance
.
내가 말했듯이, 나는 함수형 프로그래밍 언어에 익숙하지 않기 때문에 그것에 대해 잘못 말하면 자유롭게 지적하십시오.
set!
끝나거나 다른 함수를 사용하지 않고 여러 가지 계획 프로그램을 작성하는 것입니다!
. 일단 익숙해지면 순수한 FP로 쉽게 전환 할 수 있습니다.