crypt of decay - May 7th, 2010 [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

May 7th, 2010

ебанаты на марше [May. 7th, 2010|05:12 am]
[Tags|, ]

как известно, в R6RS ребиндинг запрещён. более 20 лет с этим не было проблем, а тут внезапно! решили, что больше нельзя. компьютеры ведь становятся всё медленней, и то, что нормально работало 20 лет назад, сейчас, очевидно, будет дико тормозить.

кстати, REPL оттуда выкинули тоже (если ваша Схема говорит, что она R6RS и при этом имеет REPL, то это не R6RS, вот так).

вообще, направление таково, чтобы можно было писать компиляторы попроще. а то ведь компилятор перетрудится, бедняга. я, правда, всегда считал, что просто и удобно должно быть программисту.

вообще, я подозреваю, чей мерзкий ебальник светится за этой хуитой. как и за дебильными шаблономакрами, да. по моим подозрениям это тот, кто немножечко торгует своей сраной проприетарщиной. поскольку открывать код оно не желает, оно предпочитает протаскивать в стандарт те фичи, которые допилило у себя в системе (а также фичи, которые его система хорошо умеет). думаю, не надо пояснять, зачем.

самыми вменяемыми, кстати, оказались авторы Chicken и SCM. потому что послали нахуй уебанов вместе с их R6RS. остальные, блядь, подставили жопу и славят «улучшения языка».

то есть, из более-менее серьёзных систем на выбор остался один интерпретатор и один компилятор. печально.

естественно, в улучшение ситуации после R7RS я не верю: мерзкий ебальник-то никуда не делся.

впрочем, я допускаю, что мои подозрения неверны. но вероятность очень мала, тащемта..
Link2 meows|meow!

по-моему, охуительно [May. 7th, 2010|10:00 pm]
[Tags|]

чудная демонстрация совершенной безмозглости тех, кто орёт, что негигиенические макры должны врезать дуба, и только гигиена спасёт мир:
;;; Grahams' if
(defmacro gif (&rest args)
  `(cond ,@(pair-them args))) .


и гениальный высер гигиеноёба:

Anyway, here's your «gif» in Scheme. (There are several ways to define
macros in PLT Scheme, but «syntax-rules» is quick and fun for simple
tasks like this.)
#lang scheme/base 
;; by neil AT neilvandyke DOT org, 2009-10-25 
;; Contributed to Public Domain 

(define-syntax %syntax-error (syntax-rules () ((_) (error)))) 

(define-syntax gif 
   (syntax-rules () 
     ((_)       (values)) 
     ((_ X)     X) 
     ((_ X …) (%gif:2 (X …) ())))) 

(define-syntax %gif:2 
   (syntax-rules () 
     ((_ () O) (%syntax-error «gif must have odd number of arguments»)) 
     ((_ (I) (O …)) (cond O … (else I))) 
     ((_ (T V I …) (O …)) (%gif:2 (I …) (O … (T V))))))

да, эта срань проверяет количество аргументов. плюс одна строка к оригинальной CL-версии, угу.

никогда не мог понять, отчего люди так хотят усложнить себе жизнь во имя неких «концепций». да, шаблономакры с гигиеной иногда удобны. однако это:
а) ещё один язык для изучения (и часто результат является write-only code);
б) допизды сложен в реализации (сравнительно с «обычными» макрами);
в) тормозят.

в общем, эту хуйню можно иметь, но не обязательно. мне кажется, что-то в этой консерватории не продумали.

зыж да, я могу писать подобную лапшу. но предпочитаю обычные макры..
Linkmeow!

ну, и справедливости для [May. 7th, 2010|10:03 pm]
к прошлому:
(define-syntax gif 
   (syntax-rules () 
     [(_) (void)] 
     [(_ final) final] 
     [(_ test success rest …) 
      (if test success (gif rest …))]))

это, конечно, менее уродливо, и даже прочитать можно. однако же количество буковок всё равно дохуя большое..
Linkmeow!

navigation
[ viewing | May 7th, 2010 ]
[ go | Previous Day|Next Day ]