LINUX.ORG.RU

79
Всего сообщений: 307

common lisp - удалить из списка элемент по порядковому номеру

Гуглил 2 минуты (а то и 7), потом вспомнил. Поэтому достойно увековечивания.

(remove-if (constantly t) '(a b c d e) :start 3 :count 1)
⇒ (a b c e)

Результат может иметь общий хвост с оригиналом, но оригинал не модифицируется. delete-if модифицирует оригинал.

Справка - по ссылке

 

den73 ()

Видео про gensym g2

http://dev.gensym.com/wp-content/uploads/2015/11/Using-Inspect.mp4

Тема создана по той причине, что я работал с этой системой (дорабатывал), но NDA. Но никто не мешает дать ссылки на открытую инфу, там много интересного. Я её не продаю, если что :)

 , , , ,

den73 ()

clojure после common lisp - насколько омерзительно и в чём именно?

Всё ещё думаю о возможности заняться разработкой на clojure. Но ява же тормозная - меня бесит скорость сборки. Вот боюсь, как бы кложа не оказалась слишком уж тормозной.

Расскажите о своих ощущениях (из серии «собираюсь жениться - отговорите»).

 , ,

den73 ()

SBCL больше не поддерживает HPPA и DEC Alpha

Собственно, сабж.

Вышла новая версия SBCL 2.0.9 в которой удалили поддержку сабжевых архитектур: http://sbcl.org/news.html#2.0.9
Скачать: https://sourceforge.net/projects/sbcl/files/sbcl/2.0.9/sbcl-2.0.9-source.tar....

 ,

saahriktu ()

Ыкспэртное ревью Common Lisp

 ,

kookoo ()

Выкатили пятую демку лисп ОС Mezzano

https://github.com/froggey/Mezzano/releases/tag/demo5

Можно потыкать палочкой в VirtualBox, QEMU или даже на реальном железе (привет ReactOS!).

Последние изменения:

  • USB stack by fittestbits
  • Improved overall file system support by fittestbits
  • EXT2/3/4 support has been implemented by Bruno Cichon (ebrasca)
  • GMA950 modesetting display driver
  • Hardware accelerated 3D support via qemu’s Virgl device
  • Multicore/SMP support
  • Improved atomic operations
  • Async APIs: wait-for-objects, dispatch, and thread pools
  • Networking improvements: Server support, DHCP, TCP retransmit
  • Source locations are tracked for many kinds of definitions
  • Weak hash tables and other weak objects
  • Cleanup of object representation and unifcation of standard-object/structure-object
  • Unboxed structure slots
  • Short floats implemented using IEEE half floats
  • Unboxed (unsigned-byte 64) arithmetic
  • Stack overflows and memory faults are trapped and can be recovered from
  • Support for building on Windows
  • Major improvements to CLOS and MOP conformance
  • Keymap picker
  • More bug fixes, performance improvements and features

Еще в поставке есть из приложений:

  • IRC
  • Text Editor (Emacs-like)
  • Telnet
  • File manager
  • DOOM
  • Quake I
  • REPL (с доступом ко всем кишкам ОС)
  • Swank

 , , ,

kookoo ()

Вызывать и не ждать функцию библиотеки

Добрый день, комрады!

Использую woo (https://github.com/fukamachi/woo). Хочется реализовать start/stop функции в модуле. Для этого надо код:

  (lambda (env)
    (declare (ignore env))
    '(200 (:content-type "text/plain") ("Hello, World"))))```


вызывать и не блокировать (не ждать) дальнейшее выполнение. Вопрос - как это сделать на CL?

 

silver-bullet-bfg ()

Встроенная DB на Common Lisp

Комрады, всех приветствую. Есть ли встраиваемая БД для Common Lisp? Делаем небольшой pet-проект, часть кода уже на Racket, часть будет на СL. Для сервисов, где нужна не большая БД не хочется тащить ещё и PicoLisp. Посему вопрос.

 , , ,

silver-bullet-bfg ()

Emacs -> sbcl, wishfull thinking

Никто не пробовал соединить emacs widget с sbcl, я вот к чему, пишем интерфейс на emаcs а обработчик вызывает код на sbcl и уже там происходит вычисление кода, common lisp кода.

 ,

saufesma ()

Макросы + история успеха

Комрады. Сабж собственно - чем макросы racket лучше/хуже макросов cl и наоборот?

Второе - где, какой диалект и для чего (лиспа) вы применяете?

Всем спасибо.

З.Ы.: интерес к этому так как начали писать с коллегами большую система на racket. Стало интересно. Делаем just for fun

 , , ,

silver-bullet-bfg ()

Навелосипедил квадратные скобки в лиспе

Тащемто, для полного счастья в bike, кроме прочего, не хватало ридер-макросов, которые бы уменьшали количество круглых скобок, квотирования и прочего текста при вызове дотнета.

Тащемто теперь есть. Вот так можно вызывать методы:

(use-namespace 'System)

[:Console WriteLine "Hello, World!"]

Вот так можно получить текущее время в стринге: (ни одной круглой скобки! может это tcl/tk?)

[[:DateTime %Now] ToString]

А вот так получить значение максимального int32, из специального статического поля соответствующего класса:

[:int $MaxValue]

Более того, можно стучаться в индексеры дикшнрей и прочих объектов, даже круче чем в Clojure:

(let ((dict (new '(Dictionary :string :string))))
  (setf #[dict "Hello"] "World!")
  dict)

И создавать Enum-ы не обременяя себя расставлением запятых:

(use-namespace 'System.Reflection)

#e(BindingFlags Public Static)

На закуску, для любителей ковыряться в байтах, добавил и такую возможность, прямо как в C# только лучше:

(use-namespace 'System.Text)

(let ((dotnet-array [[:Encoding %UTF8] GetBytes "Hello, World!"]))
  (with-fixed (raw-pointer dotnet-array)
   (cffi:mem-ref raw-pointer :uint8)))
;; ==> 72

Не хватает батареек? Тогда мы идем к вам!

 , , ,

lovesan ()

Common Lisp VS Racket

Комрады. Очень давно тыкал в Cl/SBCL, не так давно написал пару сервисов для этого вашего web’a на Racket.

Вопрос - Common Lisp VS Racket, что более живо для написания web’a, что имеет больше батареек, какая IDE лучше (кроме Emacs), etc.

 , , ,

silver-bullet-bfg ()

Какой сейчас самый актуальный / фичастый парсер xml на CL?

Всем привет. Нужно парсить xml от поставщиков и загонять в базу инет-магазина. Какой у нас щас самый нормальный парсер, который умеет лениво обрабатывать xml на условный миллиард* итемов и не падать? Для CL это plump или на что еще стоит обратить внимание? На racket / clojure тоже подойдет, если кто в курсе и имел опыт практического применения. Интересует в первую очередь практичность, незабагованность и фичастость.

 , , , ,

alienclaster ()

Коммон лисп. Multiple dispatch как в Julia

Привет. В Julia при определении функции наподобие такой

f(x :: T) where T <: Number = 2x

Я могу вызвать f() с любым числом и компилятор сам подставит код, наиболее специфичный для данного типа.

А в common lisp

(defun f (x) (declare (type number x)) (* 2 x))

Компилятор создаст 1 функцию с наименее специфичным кодом, которая будет работать с любым числом

Как можно эмулировать поведение джулии с заранее известным множеством типов?

UPD: название треда вышло дурацким

 

deadplace ()

Вышел Steel Bank Common Lisp 1.5.9

 ,

saahriktu ()

Python VS Common Lisp, workflow and ecosystem

https://lisp-journey.gitlab.io/pythonvslisp/

In short, compared to Lisp development workflow, Python workflow is appaling, horrible, a torture. I can’t really express myself with words. Perhaps the image of a giraffe with whipped cream would be more eloquent.

This is a super high quality comparison. thanks so much. i program in python, clojure, and i’ve been doing some common lisp. python - hard to match my productivity in python right now – some of the libraries are super weird though. i had huge issues with in consistent behavior in some of the data libraries – basically some aspects of python encourage bad library design which you pay for in hours of your life. clojure - consistency/guarantees are nice though the rigid functional style feels somewhat alien/limited to my thinking, anywhere it touches java sucks, anytime lein breaks and you cant repl it really sucks, error messages are kind of awful in clj. common lisp - a lot of fun to program in, programming feels very natural, but i struggled to work with some tools and struggle to identify what libraries are still good/maintained. In general: I struggled to get emacs working on linux.

 ,

Uncle_Bobby ()

Почему CL, а не Logo?

Недавно узнал, что в роботах-пылесосах Roomba используется урезанный Common Lisp:

iRobot

a company that designs and builds consumer robots for inside and outside of the home, including a range of autonomous home vacuum cleaners (like the Roomba, whose native code is written in a compatible subset of Common Lisp).

https://github.com/azzamsa/awesome-lisp-companies

Почему не стали использовать специализированный диалект Lisp для черепахоидов - Logo?

 , , , ,

Bagrov ()

Вопрос про историю лиспа

Мне понравилось замечание в SICP что у лиспа довольно специфичный взгляд на синтаксический сахар. Но вот я не могу понять почему в таких формах из CL как cl:defun или cl:destructuring-bind у ключевых симоволов &key, &optional приставка & вместо использования более адекватных для CL кейвордов?

 , ,

ados ()

Велосипед на Asp.Net Core MVC

(барабанная дробь)

Теперь у моего велосипеда есть пример встраивания лиспа в пайплайн Asp.Net Core MVC.

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

Все на лиспе, и сервер, и модель, и вью, и контроллер, и даже небо и даже Аллах.

https://github.com/Lovesan/bike/blob/master/examples/aspnet-mvc.lisp

Вот конкретно код хендлера:

(defun process-request (request response route-data)
  (declare (type dotnet-object request response route-data)
           (ignore request))
  "Processes a single HTTP request.
 REQUEST parameter represents an instance of HttpRequest.
 RESPONSE parameter is an instance of HttpResponse, which we would modify.
 ROUTE-DATA represent a collection of route data parameters(a RouteData instance)."
  (handler-case
      ;; First, retrieve the 'name' route parameter, which we have configured
      ;;  in our CONFIGURE-ROUTES handler
      ;; In case of it represents a string which equals to 'None',
      ;;  we instead utilize current user name.
      (let* ((route-arg (ref (property route-data 'Values) "name"))
             (who (if (string-equal route-arg "None")
                    (property 'Environment 'UserName)
                    route-arg)))
        ;; Set response content type
        (setf (property response 'ContentType) "text/plain; encoding=utf-8")
        ;; Write a string to response stream. Note that the extension method
        ;;   which we are making use of, returns a Task instance
        (invoke 'HttpResponseWritingExtensions 'WriteAsync response
                (format nil "Hello from AspNet.Mvc, ~a!~%Now is ~a~%"
                        who
                        (invoke (property 'DateTime 'Now) 'ToString))
                (property 'CancellationToken 'None)))
    (error (e)
      ;; Handle error in case of one occurs and return completed task
      (format *error-output* "~a~%" e)
      (property 'Task 'CompletedTask))))

 , , , ,

lovesan ()

Велосипед починили. Теперь линуксоиды тоже могут в .Net Core через SBCL

Значит так, сегодня починили баг который не давал SBCL работать с подгруженным в него .Net Core на Линуксе.

(напоминаю, что я делаю библиотеку которая позволяет дергать дотнет-кор из лиспа, и наоборот https://github.com/Lovesan/bike)

Но кроме того, я уже некоторое время собираю докер имаджи, которые содержат в себе реализацию лиспа и .Net Core SDK:

https://cloud.docker.com/u/love5an/repository/docker/love5an/dotnet-core-sdk-...

Пока поддерживаются реализации SBCL и Clozure CL(не путать с Clojure).

В основном для линукса, но также есть SBCL в контейнере Windows nanoserver.

Собираю сам, под AMD64, но исходники докерфайлов открыты, можете брать и модифицировать если надо:

https://github.com/Lovesan/dotnet-core-sdk-common-lisp-docker

Даешь лисп! Херак херак и в продакшн!

 , , , ,

lovesan ()