Size: a a a

Сообщество Scheme

2019 March 14

VS

Veniamin Synaptique in Сообщество Scheme
Curried Function Shorthand
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Сообщество Scheme
Действительно. Каждый день что-то новое. Спасибо.
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Veniamin Synaptique
Curried Function Shorthand
Хотел сначала просто сказать что это замыкание
источник
2019 March 22

AZ

Aydar Zarifullin in Сообщество Scheme
Мягкое введение в недетерминизм на Scheme

https://ebzzry.io/en/amb/
источник
2019 March 27

V(

Vλadimir (Hawthorne the Toolmaker) in Сообщество Scheme
Aydar Zarifullin
Не знаю как в Chez, но в Racket очень легко понять как прибиндить любую либу/язык у которого есть C интерфейс
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Сообщество Scheme
Попробую в выходной интерфейс для метода из LAPACK пробросить. На planet racket упоминается https://github.com/farr/PLT-Racket-Linear-Algebra-Bindings
Но ей сто лет и чет у меня не завелась сходу. (Может надо  на  libblas по-другому сослаться)
источник

PG

Pïg Grëënëst in Сообщество Scheme
А что значит PRL в данном контексте?
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Сообщество Scheme
Programming Research Laboratory, Northeastern University
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Сообщество Scheme
То есть не Physical Review Letters :)
источник

AZ

Aydar Zarifullin in Сообщество Scheme
По ffi официальная документация неплохая https://docs.racket-lang.org/foreign/index.html
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Создание GUI для генератора паролей

https://alex-hhh.github.io/2019/03/password-generator-gui.html
источник

AK

Andrew Kravchuk in Сообщество Scheme
Vλadimir (Hawthorne the Toolmaker)
Попробую в выходной интерфейс для метода из LAPACK пробросить. На planet racket упоминается https://github.com/farr/PLT-Racket-Linear-Algebra-Bindings
Но ей сто лет и чет у меня не завелась сходу. (Может надо  на  libblas по-другому сослаться)
Если сравнивать FFI у Racket и Chez, у второго намного проще (я с обоими работал)
В Racket ещё нужно совершить массу телодвижений для самой сборки, плюс там используется кодогенератор (проходящийся по C-шному клеевому коду), который умеет только в C89
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Andrew Kravchuk
Если сравнивать FFI у Racket и Chez, у второго намного проще (я с обоими работал)
В Racket ещё нужно совершить массу телодвижений для самой сборки, плюс там используется кодогенератор (проходящийся по C-шному клеевому коду), который умеет только в C89
Какой сборки? в Racket FFI динамическую либу просто подгружаешь и все. Или я не понял о чем ты?
источник

AK

Andrew Kravchuk in Сообщество Scheme
Если хочешь из Racket-приложения дёргать код на C, там целая история. Надо звать raco, чтобы он отпрепроцессил твой код, затем звать его же два раза, чтобы он его скомпилил в объектники и слинковал в нечто, что затем можно загрузить в racket
источник

AK

Andrew Kravchuk in Сообщество Scheme
Там же не какая попало должна быть дин. либа, а экспортирующая опр. символы
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Andrew Kravchuk
Если хочешь из Racket-приложения дёргать код на C, там целая история. Надо звать raco, чтобы он отпрепроцессил твой код, затем звать его же два раза, чтобы он его скомпилил в объектники и слинковал в нечто, что затем можно загрузить в racket
Ты что-то путаешь...  Там прекрасный FFI с подгрузкой обычных СИШНЫХ динамических либ и без всякого сишного клеевого кода
источник

AK

Andrew Kravchuk in Сообщество Scheme
Сейчас свой кот раскопаю, чтобы предметно говорить
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Andrew Kravchuk
Сейчас свой кот раскопаю, чтобы предметно говорить
Я за Racket отвечаю сам пару либ биндил к нему
источник

AK

Andrew Kravchuk in Сообщество Scheme
Ну вот как я делал, например: пишется файл network.c, в котором определяются следующие обязательные функции:
Scheme_Object* scheme_initialize(Scheme_Env* env)
Scheme_Object* scheme_reload(Scheme_Env* ns)
Scheme_Object* scheme_module_name()
И, например, вот такая кастомная:
Scheme_Object* start_network(int argc, Scheme_Object** argv)
(при этом Scheme_Object берётся из #include "escheme.h")
Затем всё это варится до густоты через raco ctool --xform,  raco ctool --cc и raco ctool --ld
И, наконец, в racket-коде можно сказать
(require "network.rkt")  ;; именно так, .rkt - racket при этом найдёт скомпилированную через raco динлибу и подргузит её
(start-network *host* *port*)
источник

AK

Andrew Kravchuk in Сообщество Scheme
Там, конечно, есть несколько способов FFI, я вот почему-то остановился именно на этом
источник