[Gauche-devel-jp] Would you like to write uniform vector as `#f32(, (+ 1 1) 2)?

アーカイブの一覧に戻る

Katsutoshi Itoh cut-s****@maste*****
2004年 5月 29日 (土) 18:14:26 JST


伊東です。
ユニフォームベクタについての質問というか要望というか何なんだろう。

通常のベクタでは

`#(,(+ 1 1) 2)
  => #(2 2)

ってなりますよね?
同じようにユニフォームベクタも書きたいと思わないものなのでしょうか?
実は下の様なコードを書いてて、ん〜?こんな風に書かないといけないの?
って思ったのですが、 gauche.uvector だけじゃなく、 srfi-4 でも同じく
こういった書き方は許されてないんですよね。
ユニフォームベクタって型が一緒のメンバだけで構成されるベクタってだけで
基本のベクタと同じ扱いだと思ってたんですが、なんか仕様上アタリがあるんでしょうか?


":";exec gosh -b $0 "$@"
(use gauche.uvector)
(use gl)
(use gl.glut)

(define (initialize)
  (gl-clear-color 0.0 0.0 0.0 1.0))

(define (display)
  (do ((offsetX -1.0 (+ offsetX 1.0)))
      ((>= offsetX 100.0) (set! offsetX (- offsetX 100.0)))
    (gl-clear GL_COLOR_BUFFER_BIT)
    (gl-color '#f32(1.0 1.0 0.0))
    (let ((x (list->f32vector (list (+ -80.0 offsetX) -80.0)))
	  (y (list->f32vector (list (+ -20.0 offsetX) -20.0))))
      (gl-rect x y))
;;; ここの部分をこんな風に書こうとしたのです。最初は。。。
;;;    (gl-rect `#f32(,(+ -80.0 offsetX) -80.0) `#f32(,(+ -20.0 offsetX) -20.0))
    (gl-flush)))

(define (keyboard ch x y)
  (if (= ch 27)
      (exit 0)))

(define (reshape w h)
  (gl-viewport 0 0 w h)
  (gl-matrix-mode GL_PROJECTION)
  (gl-load-identity)
  (glu-ortho-2d -100.0 100.0 -100.0 100.0)
  (gl-matrix-mode GL_MODELVIEW))

(define (animate)
  (glut-post-redisplay))

(define (main args)
  (glut-init args)
  (glut-init-display-mode GLUT_RGB)
  (glut-init-window-position 100 100)
  (glut-init-window-size 500 400)
  (glut-create-window *program-name*)
  (glut-display-func display)
  (glut-keyboard-func keyboard)
  (glut-reshape-func reshape)
  (glut-idle-func animate)
  (initialize)
  (glut-main-loop)
  0)



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る