LINUX.ORG.RU

Годнота. В избранное, однозначно.

Hertz ★★★★★
()

I wrote some code to query my Newsbeuter database:

From NaN, 0NaN to NaN, 0NaN, a total of 882 repos were created

^_______^

fmdw
()

Хорошая (само)реклама.

Нет аргументов выбора clack перед weblocks или crane и Integral перед hu.dwim.perec.

Почему для интерфейса с GTK выбран cl-cffi-gtk с ручной (и устаревшей на год) привязкой, а не cl-gobject-introspection, в котором для привязки требуется только актуальная версия пакета GObjectIntrospection (из GTK)?

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

Все еще хуже чем казалось.

Что интересно, я ни чем из приведенного списка не пользуюсь, хватает того, что идет из коробки в LispWorks.

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

Нет аргументов выбора clack перед weblocks или crane и Integral перед hu.dwim.perec.

weblocks
hu.dwim.perec

Оба не нужны. У японцев лучше получается.

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

https://github.com/fukamachi

то есть https://github.com/fukamachi/integral

У hu.dwim.perec какой-то наркоманский код.

Мне API показалось достаточно понятным.

Integral

(defclass user ()
  ((name :col-type text
         :initarg :name))
  (:metaclass <dao-table-class>))

Perec:

(defpclass* user ()
  ((name  "" :type string)))

Вроде читается не хуже.

А как в Integral сделать

(defpassociation*
  ((:class course :slot students :type (set student))
   (:class student :slot courses :type (set test)))
  (:dimensions (time)))
?

Чтобы можно было получить курсы указанного студента на указаную дату:

(with-transaction
  (with-time "2015-08-26"
     (with-revived-instance the-student
        (courses-of the-student))))

или хотя бы

(defpassociation*
  ((:class corporation
    :slot employees
    :type (set person))
   (:class person
    :slot employer
    :type corporation)))

Исходя из того, что я вижу в README у Integral там просто передрали http://clsql.b9.com/manual/update-instance-from-records.html (даже меньше: в clsql всё-таки был :join-class). Какой-то NIH синдром: выкинуть всё и сделать свой маленький чистый велосипед.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от ados

Автор знает о существовании Quicklisp.

Хорошо, только непонятно как это относится к моему вопросу.

А зачем нужны no-sql вообще?

http://bfy.tw/1UPA

Если же охота просто похоливарить, то я пас.

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

Какой-то NIH синдром: выкинуть всё и сделать свой маленький чистый велосипед.

Да, японцы этим нередко страдают, только их велосипеды действительно часто оказываются лучше. Cм optima.

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

Другого ничего нет. Схема это сплошной фейл.

Господа, не сортесь. Времена вашего почти мейнстрима уже давно прошли, остались только тлен, безисходность и кложура.

anonymous
()

Напоминает такой же хипстерский и пустой по содержанию http://learnlispthehardway.org/. Видно, что мозгов хватает только на то, чтобы красиво перечислить 100500 пунктов. Особо радует обилие соплей на reddit.

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

Наоборот, там куча всего есть. Просто они гигиенические фанатики, define-macro убили.

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

Автор не знает о существовании не-SQL баз данных?

Да все все знают. Просто сейчас все назад мигрируют на SQL с появлением быстрых SSD на серверах. А постгрес вообще сейчас няшкой стал.

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

Имелись ввиду потроха библиотек. У японцев чище и понятнее. По фичам хз, мне пока хватает. А вообще у меня common-SQL есть :)

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

Можно пример менее huge and bloated промышленного инженерного языка?

Ну зачем же сразу тёплое с мягким сравнивать? :(

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

А зачем define-macro, если у него урезанный функционал и можно использовать полноценный define-syntax?

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

define-macro

Есть и работает

#lang racket
(require compatibility/defmacro)

(define-macro (aif cond then else)
  `(let ([it ,cond])
     (if it ,then ,else)))

> (aif 3 it 2)
3
monk ★★★★★
()
Ответ на: комментарий от anonymous

Чего тебе не хватает в Ладе Калине. Даже напрягаться сформулировать не буду.

Всё, что есть в Common Lisp, есть и в Racket. Может не всегда в явном виде (если бы, например, defmacro не было готового в библиотеке, то пришлось бы эту сотню строк написать самому).

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

бы эту сотню строк написать самому

Из которых, кстати, большая часть - парсинг, и можно заменить одной строкой-паттерном (_ name:id args:id ...).

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

А в ракете использование разных типов скобок обязательно?

Нет. Это традиция со времён Scheme. Считается, что так читать легче.

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

Дебагер?

Есть в DrRacket

Компилятор типа sbcl? Лёгкий быстрый интерпретатор типа clisp?

В данном случае «всё в одном». В смысле, компилятор в Racket — JIT Lighting. Соответственно, скорость выполнения кода примерно соответствует SBCL с разумными параметрами (без safety = 0).

Скорость интерпретации не знаю на чём проверить (чтобы аналог можно было с clisp сравнить).

Если для скриптов, то

$ time racket -n -l racket/base -V -q -e '(displayln "hello")'
Welcome to Racket v6.2.
hello

real	0m0.078s
user	0m0.068s
sys	0m0.004s

$ time clisp -q -x '(format t "hello~%")'
hello
NIL

real	0m0.023s
user	0m0.016s
sys	0m0.004s

$ time sbcl --noinform --quit --eval '(format t "hello~%")'
hello

real	0m1.316s
user	0m1.216s
sys	0m0.052s

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

Быстрый - я и имел в виду быстрый старт. Лёгкий - сколько памяти оно скушала, выводя этот хелловорлд. Могут ли несколько хелловорлд процессов снижать потребление памяти объединением её?

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

Лёгкий - сколько памяти оно скушала, выводя этот хелловорлд.

$ /usr/bin/time -f %M racket -n -l racket/base -q -e '(displayln "hello")'
hello
17152

$ /usr/bin/time -f %M clisp -q -x '(format t "hello~%")'
hello
NIL
8328

Могут ли несколько хелловорлд процессов снижать потребление памяти объединением её?

Также как и в CL. Либо только общие .so, либо надо запускать один процесс Racket, а уже в нём через thread все остальные задачи.

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

Я слышал для sbcl есть это:

       --merge-core-pages
          When platform support is present, provide hints to the  oper‐
          ating  system that identical pages may be shared between pro‐
          cesses until they are written  to.  This  can  be  useful  to
          reduce  the  memory  usage on systems with multiple SBCL pro‐
          cesses started from similar but differently-named core files,
          or  from compressed cores. Without platform support, do noth‐
          ing.

Хотя сам не пробовал.

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

with multiple SBCL processes started from similar but differently-named core files

В Racket так не принято. Есть один /usr/bin/racket. Он, очевидно, шарится. Можно также сделать бинарник для клиента, у которого нет Racket. Тогда всё в бинарнике.

monk ★★★★★
()

CL/SBCL и ассмеблер наше всио!

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

обстоит дело с профилированием

implementation dependent. В каждой реализации своё.

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

Есть thread

Игрушко; «threads currently all run on the same processor (i.e., the same underlying OS process and thread)»

есть place

Игрушко; довольно ограничено.

есть future

Есть, а толка мало.

Кроме того, можно просто использовать POSIX pthread

Об этом и спич. И в тех же SBCL/CCL, не говоря уже о LispWorks, это реализовано отлично.

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

Чего тебе не хватает в Racket?

Ощущения практичности, вызванное излишком слишком «умных» концепций и вееянием какой-то теоретичностью. И какой-то он вычурный, Racket этот. Наверное, специально для юнцов :-)

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

Я не видел не одной широко используемой программы на ракете. А вот на CL — очень даже есть, плюс у меня в продакшене.

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

И в тех же SBCL/CCL, не говоря уже о LispWorks, это реализовано отлично.

Ну не знаю. В SBCL при попытке использовать многопоточный hunchentoot + postgresql я узнал, что такое LDB. Пришлось переписать сайт на Racket.

Кроме того, в Racket его thread нормально собираются сборщиком мусора (A thread that has not terminated can be garbage collected if it is unreachable and suspended or if it is unreachable and blocked on only unreachable events).

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

Я не видел не одной широко используемой программы на ракете.

- Игровой движок от Naughty dog

- http://untyped.com/

- http://www.getkahu.com/

- Boeing и U.S. Air Force используют Racket для управления массивами телескопов (telescope arrays)

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