LINUX.ORG.RU

[Новый год][Посоветуйте] Не могу выбрать scheme

 ,


0

3

Собственно кто какую реализацию использует?

Racket / guile / chibi / chicken / chez ... их много. Какую выбрать не знаю ) Все немного разные, но я только с ними знакомлюсь и мне интересно мнение тех, кто уже выбирал. CL Тоже можно хвалить, но мне почему-то scheme больше понравилось.


Ответ на: комментарий от encyrtid

Да, я склоняюсь в эту сторону, но мне тут даже кол-во батареек не сильно важно, думаю. Многие используют chicken / chibi scheme, ради чего-то они это делают же...

nCdy
() автор топика
Ответ на: комментарий от Ok

А у других логотип не такой красивый :)

nCdy
() автор топика
Ответ на: комментарий от nCdy

Под виндой использовал Gambit, тупо взяв первый попавшийся интерпретатор. Еще есть интересная вещь, но оно похоже мертвое.

encyrtid ★★★★★
()

а какие задачи? для обучения racket, однозначно. или bigloo. для работы еще можно на kawa посмотреть

basp
()
Ответ на: комментарий от basp

Не хочу kawa : ) не люблю жаву.

С начала для обучения, потом для всего остального. Какой-то специфичной цели нет.

nCdy
() автор топика

бери Racket, а потом пробуй CL

ymn ★★★★★
()

для обучения racket, однозначно

+1

Я потом перешел на Gambit т.к. стало не хватать скорости, а там есть компилятор.

capricorn20
()
Ответ на: комментарий от capricorn20

С использованием компиляции значительно быстрее Racket, по скорости сравним с SBCL и ghc.

Учитывая, что Racket по скорости всего чуть-чуть отстает от GHC/SBCL, Gambit должен быть значительно быстрее GHC/SBCL в том числе.

anonymous
()
Ответ на: комментарий от capricorn20

Можно пример какого-нибудь теста? Скорее всего из-за GC проблема, он у racket иногда весьма странно работает.

anonymous
()
Ответ на: комментарий от capricorn20

работа с большими списками в стиле ФП

у меня, как нуба, вызывает интерес следующее:

  • насколько большие списки?
  • используете ли списки напрямую, или потоки (stream), как в sicp учат :) ?
qaqa ★★
()
Ответ на: комментарий от qaqa

насколько большие списки?

Сотни тысяч элементов в каждом.

используете ли списки напрямую, или потоки (stream), как в sicp учат :) ?

Напрямую (car,cdr), так код красивее :).Gambit при этом работает с приемлемой скоростью.

Скорее всего из-за GC проблема, он у racket иногда весьма странно работает.

Я тоже так подумал, но глубже копать не стал.

capricorn20
()
Ответ на: комментарий от capricorn20

у меня, как нуба

Я и сам не гуру, просто сообщил свой опыт

capricorn20
()
Ответ на: комментарий от capricorn20

Дело было вечером, делать было нечего :)

Решил тут запилить на Racket тестирование «работы с большим списком в стиле ФП» напрямую, и с ним же через поток. И, то ли в примере я где-то некорректно действую, то ли ...

;; list def's

(define (lst+1 lst)
  (map add1 lst))

(define (lst-1 lst)
  (map sub1 lst))

(define (lst-proc lst)
  (foldl + 0 (lst+1 (lst-1 (lst+1 lst)))))

;; stream def's

(define (str+1 stream)
  (stream-map add1 stream))

(define (str-1 stream)
  (stream-map sub1 stream))

(define (stream-proc stream)
  (stream-fold + 0 (str+1 (str-1 (str+1 stream)))))

;; test's

(define (measure measure-name proc)
  (printf "\nmeasure for ~a\n" measure-name)
  (collect-garbage)
  (time (proc)))

(define big-list     (make-list 1000000 0))
(define big-stream   (in-list big-list))
(define big-stream-2 (stream-cons (car big-list) (cdr big-list)))

(measure 'big-list     (lambda () (lst-proc    big-list)))
(measure 'big-stream   (lambda () (stream-proc big-stream)))
(measure 'big-stream-2 (lambda () (stream-proc big-stream-2)))

Welcome to Racket v5.2.
-> -> -> -> -> -> -> -> -> -> -> 
measure for big-list
cpu time: 720 real time: 722 gc time: 432
1000000
-> 
measure for big-stream
cpu time: 10144 real time: 10176 gc time: 5108
1000000
-> 
measure for big-stream-2
cpu time: 9325 real time: 9366 gc time: 5084
1000000
-> 

Кто нибудь прокомментируйте!

qaqa ★★
()

Racket. Потому что с батарейками и активно пилится.

ak367937
()
Ответ на: комментарий от nCdy

Ну Racket — достаточно здоровая хренотень с кучей не совсем нужных фич. Кроме того, после разделения схемеров на 2 лагеря, она отлучена от церкви :) Chibi — ни рыба, ни мясо. Chicken — хорошая штука, однако мне в ней не нравится довольно мутная система сборки. В принципе, не посоветовал Chicken просто потому, что сам использую Gambit — в нем простой FFI (однако без нормальной поддержки variadic-функций) и собирается он без проблем под кучей платформ.

buddhist ★★★★★
()
Ответ на: комментарий от korvin_

Спасибо за ликбез! :) Когда впервые столкнулся со словом thunk, в Lingvo нашел вот такой перевод:

«переходник»(небольшая секция кода, выполняющая преобразование (напр., типов) или обеспечивающая вызов 32-разрядного кода из 16-разрядного и наоборот)

Слишком узкий смысл вложен в перевод, для такого понятия. Поэтому, печально, что мало хороших книг в переводе. На прилавках в основном «как стать чайником за 21 день».

qaqa ★★
()
Ответ на: комментарий от no-such-file

Посмотри larceny - http://www.larcenists.org/

дата последнего релиза - 19 August 2009, грустновато

Supports pluggable garbage collectors. At one time there were five:

  • a traditional stop-and-copy collector
  • a traditional copying younger-first generational collector
  • a copying hybrid renewal-older-first generational collector
  • a copying hybrid deferred-older-first generational collector
  • the Boehm-Demers-Weiser conservative collector

...

A radical new garbage collector is under development.

Последняя строчка, наверное, оъясняет :) Если судить по Overview, проект весьма интересный

qaqa ★★
()

С наступающим Новым Годом, дорогая ))

LongLiveUbuntu ★★★★★
()

Буду оригинален — посоветую сделать собственную реализацию scheme (если есть время и желание, конечно же). А чтобы не быть голословным, то посоветую еще и вот таую вот книжечу: Write Yourself a Scheme in 48 Hours ( ссылка на pdf ).

Я, кстати, так и делаю. Хочу к маю доделать, чтобы в итоге полностью соотвествовало стандарту R6RS + что-то вроде py2exe для моей реализации схемки, для чего проект и делается, кстати.

В противнов случае - Racket во все поля.

beka
()
Ответ на: комментарий от nCdy

Те, кто принял R6RS и те, кто считает, что он уныл и не нужен. Во втором лагере предложили ERR5RS.

buddhist ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.