2014-05-10 3 views
2

상태를 변경하는 모든 라켓 절차는 무엇입니까?순전히 기능적 라켓

#lang racket/base 
(provide (except-out (all-from-out racket/base) set! …more here…)) 

내가 설정 외에 다른 무엇을 제외해야합니다 : 나는 그래서

한 적은 부작용을 가진 프로그램을 만들려고 해요 , 내가 좋아하는 뭔가를 할 거라고! ? 모든 불순한 기능의 전체 목록이 있습니까?

아, 프로그램도 #lang racket/gui를 사용합니다 (이는 내가 모을 수있는 대부분 불순합니다). 그래서 그것은 까다로울 수 있습니다 ...

고마워요.

+0

이유에 대해 더 많이 말할 수 있습니까? 즉 무엇을하려는 것입니까? 왜냐하면 "불변"은 어떤 상황과 관련이 있기 때문입니다. 어떤 프로그램도 CPU 및 RAM 상태와 관련하여 "불변"이 아닙니다. 덜 극단적 인 기능은 순수하게도 가능하지만 구현시 메모를 사용하는 경우가 있습니다. 당신이 걱정하는 컨텍스트가 무엇인지 모르겠습니다. 어쨌든, GUI는 일반적으로 Racket에서와 같이 stateful OOP로 처리됩니다. –

+0

부작용을 피하기 위해 내 프로그램을 테스트하고 추론하는 것이 더 쉬울 것이라고 생각하여 내 기능이 순전히 작동합니다. '라켓/GUI'에 상태 기반 디자인이 필요한 경우 필요를 완화하기 위해 수행 할 수있는 작업은 무엇입니까? – user3623657

답변

3

Racket에는 사전 작성되지 않은 함수 목록이 없습니다. !가있는 항목을 사용하지 않으려면! 이름에 가까이 다가 갈 것입니다.

데이터 구조를 변경할 수 있으며 변경하지 않는 한 순전히 기능적인 방식으로 프로그래밍 할 수 있습니다.