LINUX.ORG.RU

sbcl компилятор не доволен

 , ,


0

2
(defpackage "APP"
  (:use :clim :clim-lisp)
  (:export "BUTTONS-MAIN"))

(in-package :APP)
(defvar arg)
(defun press (button)
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg)))
(defun squeeze (button)
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg)))

(define-application-frame buttons	;name
    ()					;superclasses
  ()					;slots
  ;; options
  (:panes (button 
	   (horizontally ()
	     (make-pane 'push-button
			:label "squeeze"
			:activate-callback #'squeeze)
	     (make-pane 'push-button
			:label "press"
			:activate-callback #'press))) 
	  (application			;pane name 
	   :application))		;pane type ... :application is an extended-stream-pane
  (:layouts (default			;layout name
	     (vertically ()		;layout macros
	       (1/8 button) (7/8 application)))
	    (alternate			;layout name
	     (horizontally ()		;layout macros
	       (1/8 button) (7/8 application)))))

(defun buttons-main ()
  (run-frame-top-level
   (make-application-frame 'buttons :height 10 :width 10)))

выдаёт


; file: ~/Documents/using-panes-layouts.lisp
; in: DEFUN PRESS
;     (DEFUN APP::PRESS (APP::BUTTON)
;       (CLIM:ACCEPTING-VALUES (*QUERY-IO* :OWN-WINDOW T)
;         (FORMAT *QUERY-IO* "~A" APP::ARG)))
; 
; caught STYLE-WARNING:
;   The variable BUTTON is defined but never used.<- BUTTON ;     используется в BUTTONS !!!!!!!!!!!!!
; 
; compilation unit finished
;   caught 1 STYLE-WARNING condition

; file: ~/Documents/using-panes-layouts.lisp
; in: DEFUN SQUEEZE
;     (DEFUN APP::SQUEEZE (APP::BUTTON)
;       (CLIM:ACCEPTING-VALUES (*QUERY-IO* :OWN-WINDOW T)
;         (FORMAT *QUERY-IO* "~A" APP::ARG)))
; 
; caught STYLE-WARNING:
;   The variable BUTTON is defined but never used. <- BUTTON ;     используется в BUTTONS !!!!!!!!!!!!!
; 
; compilation unit finished
;   caught 1 STYLE-WARNING condition
T


Последнее исправление: Harald (всего исправлений: 1)

(defun press (button)

(defun squeeze (button)

Вот здесь не используется. Можно добавить (declare (ignore button)) - ругаться не будет. Но это не ошибка, а предупреждение всего лишь.

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

Странно, у меня такое выдало

(in-package :APP)
(defvar arg)
(defun press (button)
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg)))
(defun squeeze (button)
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg)))
(declare (ignore button))

Execution of a form compiled with errors.
Form:
  (DECLARE (IGNORE BUTTON))
Compile-time error:
  There is no function named DECLARE.  References to DECLARE in some contexts
(like starts of blocks) are unevaluated expressions, but here the expression is
being evaluated, which invokes undefined behaviour.
   [Condition of type SB-INT:COMPILED-PROGRAM-ERROR]

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

Ты даже не потрудился посмотреть, куда это вписывать надо.

(defun press (button)
  (declare (ignore button))
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg)))

(defun squeeze (button)
  (declare (ignore button))
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg)))
Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Потрудился,

(defun press (button)
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg))
  (declare (ignore button)))
;   There is no function named DECLARE.  References to DECLARE in some contexts
;   (like starts of blocks) are unevaluated expressions, but here the expression is
;   being evaluated, which invokes undefined behaviour.

;     (DEFUN APP::SQUEEZE (APP::BUTTON)
;       (CLIM:ACCEPTING-VALUES (*QUERY-IO* :OWN-WINDOW T)
;         (FORMAT *QUERY-IO* "~A" APP::ARG))
;       (DECLARE (IGNORE APP::BUTTON)))

сделал по примеру CLHS

(defun nonsense (k x z)
   (foo z x)                     ;First call to foo
   (let ((j (foo k x))           ;Second call to foo
         (x (* k k)))
     (declare (inline foo) (special x z))
     (foo x j z)))               ;Third call to foo
saufesma
() автор топика
Ответ на: комментарий от saufesma

Потрудился

А потрудиться прям скопировать приведённый фрагмент ты не можешь? Ну или почитать доку или сообщение об ошибке?

Хинт: (declare ...) идёт сразу после параметров функции.

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

На лету сообразить не всегда получается.

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

Ты даже не потрудился посмотреть, куда это вписывать надо.

Слушай, я не буду против если ты меня прокачаешь за плату по LISP и mcclim, как на это смотришь?

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

References to DECLARE in some contexts (like starts of blocks) are unevaluated expressions

И в начале какого блока у тебя declare?

(defun press (button)
  (accepting-values (*query-io* :own-window t)
    (format *query-io* "~A" arg))
  (declare (ignore button)))
Gentooshnik ★★★★★
()

sbcl молодец. Зато сразу видно, что ересь какая-то. А не в рантайме.

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

Отлично! Факт зависимости пациент признаёт, а это первый шаг на пути к успешному лечению!

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

В функциональном ЛИСП я пишу но, как высказался monk, стиль и код ужасные, поэтому я указал Common Lisp. А с CLOS у тебя как?

Опыт преподавания есть.

А как с разбивкой/структурой кода по пакетам, модулям, чтобы потом читать можно было?

saufesma
() автор топика
Последнее исправление: saufesma (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.