> 1 <
Автор | Сообщение |
anokata
9 сообщений |
#3886 2011-01-25 12:17 GMT+3 часа(ов) |
Доброго времен суток.
Если кому не трудно, то пожалуйста очените этот код и выскажите своё мнение о нём. Хотелось бы знать насколько плох мой стиль. (define (make-rejim name act conds) |
|
[: +.`*./ (3 2="0 2])@(-~ [: +/ ((3 ,. 9&$) <: i.3) |.!.0 ]) , ] ^:
|
|
misha![]()
1275 сообщений |
#3887 2011-01-25 15:08 GMT+3 часа(ов) |
Если Вы писали на Рэкете, тогда:
1) (field (rejims (make-eq-hashtable))Использование такого количества неиспользуемых, незащищенных открытых полей довольно опасно для публичного класса. Поэтому если Вы не собираетесь создавать приватный абстрактный класс, то либо избавьтесь от открытых полей, либо используйте контракты. 2) Используйте стандартные библиотеки, т.е. воспользуйтесь make-hash вместо make-eq-hashtable. 3) (get-field rejims this) эквивалентно rejims, а (set-field! cname this name) эквивалентно (set! cname name). get-field и set-field! обычно используются для доступа к открытым полям вне класса. 4) (when rej (begin ...)) эквивалентно (when rej ...). 5) (define/public (update njyouken) (define (iter-cond rest) ...) ...) объявление iter-cond излишне, я бы рекомендовал использовать цикл do, либо на крайний случай letrec. 6) (if (eq? j #\q) 'exit #f) эквивалентно (and (eq? j #\q) 'exit) |
|
anokata
9 сообщений |
#3888 2011-01-25 15:17 GMT+3 часа(ов) |
Благодарю за столь полезный ответ.
Можно узнать что такое "контракты", где об этом почитать? И как сделать поля не публичными? Чем плох make-eq-hashtable? он вроде в стандарте r6rs. |
|
[: +.`*./ (3 2="0 2])@(-~ [: +/ ((3 ,. 9&$) <: i.3) |.!.0 ]) , ] ^:
|
|
misha![]()
1275 сообщений |
#3889 2011-01-25 16:16 GMT+3 часа(ов) |
> Можно узнать что такое "контракты", где об этом почитать?
А Вы что читаете? У Рэкета есть Reference: Racket(входит в стандартный комплект документации). > И как сделать поля не публичными? Класс - это лямбда, поэтому используйте define или define-values. > Чем плох make-eq-hashtable? он вроде в стандарте r6rs. Импортировать необходимо только то, что не предоставляется стандартными библиотеками Рэкета. В конце концов, r6rs и его либы реализованы на Рэкете. |
|
anokata
9 сообщений |
#3890 2011-01-25 16:25 GMT+3 часа(ов) |
Его и читаю. Дело в том что не знаю как "контракты" там по английски называются.
|
|
[: +.`*./ (3 2="0 2])@(-~ [: +/ ((3 ,. 9&$) <: i.3) |.!.0 ]) , ] ^:
|
|
misha![]()
1275 сообщений |
#3891 2011-01-25 16:55 GMT+3 часа(ов) |
контракт - contract
|
|
> 1 <