После установки slime sbcl swank из коробки не могу найти их конфигов
М-х slime работает на ура, хотя inferior-lisp в моём .emacs не прописан. Скажите где эти конфиги устанавливаются при установке этих пакетов?
М-х slime работает на ура, хотя inferior-lisp в моём .emacs не прописан. Скажите где эти конфиги устанавливаются при установке этих пакетов?
(defvar n)
(setq n 3)
(defun list-reverse (list)
(do ((z 1 (- n 1))
(x list (cdr x))
(y '() (cons (car x) y)))
((= z 0)
y)))
(list-reverse '(a b c d f e g)) => '(a b c)
и оно никак. Надо обязательно на do сделать, а то я с ним не разберусь.
Там люди вот такое выдают на do.
(defun factorial (n)
(do (( j n (- j 1))
(f 1 (* j f )))
((= j 0) f )))
(defun list-reverse (list n)
(do ((n (- n 1))
(x list (cdr x))
(y '() (cons (car x) y)))
((= n 0) y)
(print (list n x y))))
( LIST-REVERSE '(b n v g f k) 3)
(2 (B N V G F K) NIL)
(2 (N V G F K) (B))
(2 (V G F K) (N B))
(2 (G F K) (V N B))
(2 (F K) (G V N B))
(2 (K) (F G V N B))
(2 NIL (K F G V N B))
(2 NIL (NIL K F G V N B))
(2 NIL (NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B))
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B))
и т.д.
пока не понял почему
ну вот с + заработала
(defun list-reverse (list)
(do ((n 0 (+ n 1))
(x list (cdr x))
(y '() (cons (car x) y)))
((= n 3) y)
(print (list n x y))))
LIST-REVERSE
CL-USER> ( LIST-REVERSE '(b v c x z))
(0 (B V C X Z) NIL)
(1 (V C X Z) (B))
(2 (C X Z) (V B))
(C V B)
Граждане и гражданки ЛОР не дайте свихнуться, а дайте код на Lisp или Scheme
у меня два списка (а1 а2 а3 ... an) (Р0 Р1 Р2 ... Pn)
в первом проходе получаю списки (а1) (Р0) и решение такого ур-ия
M1 = P0 * a1
в втором проходе получаю списки (a1 a2) (P0 P1) и решение такого ур-ия
M2 = P0 * a2 + (P1 * (a2 - a1))
в третьем проходе плучаю списки (a1 a2 a3) (P0 P1 P2) и решение такого ур-ия
M3 = P0 * a3 + (P1 * (a3 - a1) + P2 *(a3 - a2))
ну и т.д.
Общее уравнение
i
Mn = P0 * an + ΣPi * (an - ai)
i=1
мозги колом встали
#lang racket/gui
; Make a frame by instantiating the frame% class
(define frame (new frame% [label "Example"]))
;; переменная количества сил действующих на балку
(define num 0)
;; поле ввода количества сил действующих на балку
(define how-many-fields (new text-field%
[label "Сколько сил"]
[parent frame]
[callback (λ (w e) (set! num (string->number (send w
get-value))))]))
;;здесь наверное должен быть макрос
;;бестолковая попытка добавления текстовых полей в форму
(define (count n t-f)
(if (= n 0)
t-f
(count (- n 1) t-f)))
;; количество этих полей должно быть равно num, как к такой
; проблеме подходить
(define tf (new text-field% [label "bla"]
[parent frame]))
(count num tf)
; Show the frame by calling its show method
(send frame show #t)
Зараза
/opt/cmucl-21d/bin$ lisp bash: /home/wool/opt/cmucl-21d/bin/lisp: No such file or directory
/opt/cmucl-21d/bin$ ./lisp bash: ./lisp: No such file or directory
echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/brlcad/bin:/home/wool/opt/cmucl-21d/bin
где-то простой косяк
может потому, что не system wide /home/wool/opt/cmucl-21d/bin
новый bash зпускаешь и
echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/brlcad/bin
кто-нибудь пробовал работать с poplog?
https://www.cs.bham.ac.uk/research/projects/poplog/V16/AREADME.html
r5rs приводит пример
(letrec ((even?
(lambda (n)
(if (zero? n)
#t
(odd? (- n 1))))) ;; ---> <bindings> should have
;;the form ((<variable1> <init1>)
;;в данном случае
;;<variable1> n
;;<init1> (lambda (n) ...)
(odd?
(lambda (n)
(if (zero? n)
#f
(even? (- n 1)))))) ;;---> <bindings>
(even? 88)) ;;---> <body>
library syntax: (letrec <bindings> <body>)
Из-за того что
library procedure: (odd? n)
library procedure: (even? n)
These numerical predicates test a number for a particular property, returning #t or #f.
пример выглядит не совсем понятным.
Бросьте более читаемый примерчик использования letrec.
Нигде не могу найти, хотелось бы посмотреть как оно устроено.
Оси, default
Х горизонтально слева направо
Y вверх
Z на user
Объясните, мне один момент.
no-such-file,
monk,
DarkEld3r
вот здесь беседа очень грамотных людей
DrRacket and elisp окончательно запутался (комментарий)
сегодняшняя беседа идет уже 9 часов, по моим подсчётам.
Вот мой вопрос почему это количество постов не перетекает в качество, то есть в предложение сделать, что-либо, управляемый механизм, управляемую технологическую цепочку, что угодно. Ведь если такого нет это всё просто болталогия даже если она и интересная. Ведь это 9 часов жизни в никуда. Может уже стоит попробовать, что-то предложить создать.
Перемещено Zhbert из general
Не могу понять уже, что я тут писал, всего-то нужна функция которая режет лист на две части и возвращает левую часть то, что я написал на ракете, не работает и не пойму почему
#lang racket
(define *distance-lst* (list 1 2 3 4 5 6))
(define *A-distance* 3)
(define *left-A-lst* '())
(define d-lst (length *distance-lst*))
(define *output-lst* '())
(define (slice input-lst a output-lst)
(if (< (first input-lst) a)
(slice (cons (first input-lst) output-lst)
a
(set! input-lst (rest input-lst)))
output-lst))
;;(define (split-lst lst-input a lst-output)
; (if (< (first lst-input) a)
; (split-lst (set! lst-input (rest lst-input))
; a
; (set! lst-output
; (cons
; (first lst-input) lst-output)))
; lst-output))
(slice *distance-lst* *A-distance* *left-A-lst*)
и вот на elisp и работает как надо, задолбало, что не так не могу понять эту ракету
(defun slice (input-lst a output-lst)
(if (< (car input-lst) a)
(slice (cdr input-lst) a (push (car input-lst) output-lst))
output-lst))
(nreverse (slice '(1 2 3 4 5 6) 5 '()))
Никто не пробовал соединить emacs widget с sbcl, я вот к чему, пишем интерфейс на emаcs а обработчик вызывает код на sbcl и уже там происходит вычисление кода, common lisp кода.
(defun pos-in-lst (n lst count)
(if (= n (car lst))
count
(pos-in-lst n (setq lst (cdr lst))
(setq count (+ count 1)))))
.......
;;В этом месте всё прекрасно
(setq *omega3-max-pos-in-lst* (pos-in-lst *omega3-max*
*rev-true-omega3-lst*
*count*))
;; а здесь ошибка Wrong type argument: number-or-marker-p, nil
(setq *PHI2-at-omega3-max* (pos-in-lst *omega3-max-pos-in-lst*
*lst-of-val-PHI2*
*count*))
Проверяю аргументы
*omega3-max-pos-in-lst* ===> 59 (#o73, #x3b, ?\;)
*lst-of-val-PHI2* ===> (6.283185307179525 6.248278722139639 6.213372137099753 6.178465552059866 6.14355896701998 6.108652381980094 6.073745796940208 6.038839211900322 6.003932626860435 5.969026041820549 5.934119456780663 5.899212871740777 ...)
*count* ===> 0 (#o0, #x0, ?\C-@)
Правда 1011 строк кода и имакс просто отказывается работать, не могу сообразить
(defvar *lst*)
(defvar *w-lst*)
(defvar *pos-min*)
(defvar *pos-max*)
(setq *lst* (list 45 1 2 3 4 5 6 7))
(setq *w-lst nil)
(setq *pos-min* 2)
(setq *pos-max* 3)
Как на выходе получить лист *w-lst* с элементами (1 2), сообразить не могу. Используемый язык elisp.
Получил я свой лист, сомнительным способом, может кто математически подскажет, а то может оказаться, что этот код только на этом листе и даёт правильный результат
(progn
(defvar *lst*)
(defvar *w-lst*)
(defvar *w-lst1*)
(defvar *pos-min*)
(defvar *pos-max*)
(setq *lst* (list 45 1 2 3 4 5 6 7))
(setq *w-lst* nil)
(setq *w-lst1* nil)
(setq *pos-min* 2)
(setq *pos-max* 3))
(defun list-cdr (w-lst1 lst pos-max)
(if (< 0 pos-max)
(make-list (push (car lst) w-lst1)
(setq lst (cdr lst))
(- pos-max 1))
w-lst1))
(setq *w-lst1* (nreverse
(list-cdr *w-lst1* *lst* *pos-max*)))
(setq *w-lst1* (nthcdr (- *pos-min* 1) *w-lst1*))
Я в такое упираюсь по часу бывает
An error occurred during a connection to www.linux.org.ru. PR_END_OF_FILE_ERROR
The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
Please contact the website owners to inform them of this problem.
а в dwg.ru такое не выскакивает. Можно что-то сделать?
Получилось как одним заглавием всё сказал. Добавлю, если в листы запихивать таблицы то программка будет совсем уж увесистой, да писать их трудновато, ошибки трудно будет вылавливать. В отдельный файл, то не знаю как оттуда потом дергать данные. Заранее спасибо.
Такая задача, цилиндр длиной 1000мм, радиусом 57 мм. Определить массу, момент инерции, задача решается руками и с помощью VariCAD
| Плотность | ρ | 7.85E-06 | кг/мм^3 | |
|---|---|---|---|---|
| Длина | L | 1000 | мм | |
| Радиус | R | 57 | мм | |
| Масса | m | (PI * R^2 * L) * ρ | 80.1252210723789 | кг |
| Результат | VariCAD | 80.125221 | кг | |
| Момент инерции | J | (m / 2)* R^2 | 0.13016342163208 | кг/м^2 |
| Результат | VariCAD | 0.12858245446869 | кг/м^2 |
Нетрудно видеть с массой VariCAD справился на отлично, с моментом инерции не очень или это у меня косяк, а какой не вижу.
Стало интересовать такая проблема, простенькая такая как центр тяжести. Как пример, берём трубу длиной 1000мм, диаметром 57мм, толщина стенки 3.5мм и сверлим в ней отверстия в ряд по 8мм каждое, насквозь. А затем делаем лыску на стороне скажем входных отверстий, вставляем в отверстия штыри по 150 мм, и вот надо рассчитать центр тяжести. Руками как-то не знаю, может кто научит? Теперь не знаю как решить такую задачку т.к. не знаю как относиться к результатам расчёта на VariCAD. Salome-meca and FreeCAD or Solvespace такие дела не решают. Кто подскажет софту?
Скорее всего я разговариваю сам с собой, у меня вводных 100 строк, 13 листов расчётов. От 20 до 40 строчек каждый лист. Каждый лист зависит от предыдущего, что с этим делать не могу сообразить. Как это раскидать чтобы можно было работать комфортнее. Data base какую сделать, так в LibreOffice data base как адресная книга, а у меня цифирки, да и на имаксе тоже не знаю как. Вдруг кто сталкивался с такой ситуацией, подскажите.
Перелопатил widget example и widget-demo.el, в последнем оказались ошибки которые нужно исправлять, а я не понимаю как эти видгеты определять, если требуется выход за рамки widget example, не то, что ошибки исправлять, ситуация из рук вон плохо. На форуме тоже ничего не нашёл.
Мне нужно объяснение как создавать новые видгеты. И желательно знающего -> незнающему.
#lang racket/gui
;Point dwell in canvas, cavas dwell in frame
(define frame (new frame%
[label "Example"]
[width 300]
[height 300]))
; Add a text fields to the frame
(define dia
(new text-field% [parent frame]
[label "Diameter"]))
;[callback (lambda (value event)
;(send dia get-value))])) ;непонятно как тут рабртает
(define b (send dia get-value)) ;does not work
;(send dia get-value) запустил прогу, потом вбиваю
;"455677" это в репл, работает
(send frame show #t)
[/code/
Не понятно как вызывать методы класса из окружающего класс кода| ← назад | следующие → |