X



【GNU】スクリプト言語 Guile【scheme】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2009/04/18(土) 01:30:29
   __,, , , , _ 、 ,,, ... ,, _ ..,_
 ー=、 、ー-、`ヽ、、ヽ`!i' , ,i",r'",-'"=ミ
    `ヽ`ヾ`、 ! ヽ ! l! i! !_i_/_<'"``
     `,ゝ、iliー'" "、,"、',  i, リ
      !/!,li ,;;-=o=-,ッィ=。ゥィ     くにへ かえるんだな
  __  i、`!', '; `ー /;;!i、''; ,!     おまえにもかぞくGuileんだろう・・・
ー''`ヽ`,ーi'`''"!、ヽ , `一'、 /   __
    `il `i ! ヽ、   ̄ ̄ / iヽ、/ ,.ヽ_
     i! !`   `ーァ、-ー'  ! ノ!トi,!'",ノ-、
   ,..=、i! iヽ-、 rィ',;'!ヽー-、!  `/_,i' _,.!'、
ーニー-、._ `ヽゞニ-、.;' i! ! ,  `ト_ノ`x-'" ノ
=ニヽ、 , `, /ヾ=ソ ノ !/   !、`ー`''イ、
-ー-、 `i, / / ヽ `イ_,  i -'" ̄`! !   ヽ
   ゝノ /-'"  `   ' !    ヽ     !

Guile (About Guile)
http://www.gnu.org/software/guile/guile.html

Guile によるスクリプティング
http://www.ibm.com/developerworks/jp/linux/library/l-guile/index.html
0002デフォルトの名無しさん
垢版 |
2009/04/18(土) 02:39:30
2get
0003デフォルトの名無しさん
垢版 |
2009/04/18(土) 05:17:16
3get
schemeを初めて触る人にアドバイスをください
英文でも学習しようという意欲のある人だと、emacsのinfoが便利っぽいですね
0006デフォルトの名無しさん
垢版 |
2009/04/18(土) 08:46:10
>>5
シンボルが無い
()と#fを使いわけなくちゃいけない
名前空間が無い
マクロが無い
ハッシュテーブルが無い
仕様に未定義 undefined だらけ
仕様にREPL(read-eval-print-loop)が無い

ワルいけどSchemeはLispとしてあまりにも不完全すぎる
0007デフォルトの名無しさん
垢版 |
2009/04/18(土) 08:57:15
>>6
> シンボルが無い
うそつくな
> マクロが無い
うそつくな
> ハッシュテーブルが無い
R6RSかSRFI69にありますが

CL厨ってこんな奴ばっか?
0008デフォルトの名無しさん
垢版 |
2009/04/18(土) 09:15:56
>>6を満たした言語ってなんだろ?
C言語(特有のマクロ)っていつ頃ついたのかな?

>()と#fを使いわけなくちゃいけない
がLisp/Schemeっぽいんだよな
0010デフォルトの名無しさん
垢版 |
2009/04/18(土) 09:31:34
Common LispをLispと呼ぶのは初心者だってじっちゃがいってた。
0012デフォルトの名無しさん
垢版 |
2009/04/18(土) 09:36:40
> SchemeはCommon Lispとしてあまりにも不完全すぎる
それはあまりにもごもっともでございます。
0013デフォルトの名無しさん
垢版 |
2009/04/18(土) 09:55:23
C言語はCommon Lispとしてあまりにも不完全すぎる
JavaはCommon Lispとしてあまりにも不完全すぎる
PerlはCommon Lispとしてあまりにも不完全すぎる
cobolはCommon Lispとしてあまりにも不完全すぎる

Schemeで表せ
0015デフォルトの名無しさん
垢版 |
2009/04/18(土) 10:01:29
>Schemeで表せ
#f
0016デフォルトの名無しさん
垢版 |
2009/04/18(土) 10:07:33
Common LispはSchemeとしてあまりにも不完全すぎる
C言語はSchemeとしてあまりにも不完全すぎる
JavaはSchemeとしてあまりにも不完全すぎる
PerlはSchemeとしてあまりにも不完全すぎる
cobolはShcemeとしてあまりにも不完全すぎる
HaskelllはShcemeとしてあまりにも不完全すぎる
0019デフォルトの名無しさん
垢版 |
2009/04/18(土) 10:48:16
まつもとゆきひろ<<DennisRitchie<<<<<<<<<<<<(日本語の限界)<<<<<Bjarne Stroustrup
0020デフォルトの名無しさん
垢版 |
2009/04/18(土) 10:55:08
Guileのメリットって何?FSFのお墨付き?GNU標準だから?
0021デフォルトの名無しさん
垢版 |
2009/04/18(土) 12:17:28
>>20
GNUの標準拡張言語としてHURDと同じくらい未来が保証されている。
この未来が明るいのか暗いのかは人によって違う。
0031デフォルトの名無しさん
垢版 |
2009/04/24(金) 01:46:22
>>1
935 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/18(土) 05:12:39
>>933
guileを中心に勉強している身としては、うれしいがw
本当に大胆だな

Guileスレを立てた1は、週1で簡単なスクリプトでいいから、投稿してくれ
0033デフォルトの名無しさん
垢版 |
2009/04/24(金) 20:05:25
# It's cool!!!
(define (sonic-boom)
(define (bar y)
(define (foo x)
(if (= x 0)
(format #t ")\n")
(begin (format #t " ")(foo (- x 1)))))

(if (= y 20)
(foo y)
(begin (foo y) (bar (+ y 1)))))
(begin (format #t "Sonic Boom!!!\n") (bar 0)))

(sonic-boom)
0034デフォルトの名無しさん
垢版 |
2009/05/05(火) 13:09:46
209 名前:デフォルトの名無しさん[sage] 投稿日:2009/05/05(火) 05:23:24
>>208
いいんじゃない?
それでは、パイロット版という感じで気楽にやりましょうか。

【イベント名】 13時だョ!全員集合

【開始時間・終了予定時間】 今日の13時〜14時
【モットー】競うというより楽しく
【参加条件】一般的な社会常識がある人で関数型言語が使える人、または勉強している人。
【部門】今回は2部門。初心者部門と一般部門。初心者は3題出題。
一般部門は初心者部門の問題3題に加えて、7題を加えた計10題。
【イベントに使うスレ】 ttp://pc12.2ch.net/test/read.cgi/tech/1239985829/
【あとサイト】  和訳 http://odz.sakura.ne.jp/projecteuler/
【解答用紙】 http://codepad.org/
【備考】初心者の参加、大歓迎です。あとおもしろい企画があったら、どしどしレスしてください。

Lisp Scheme Part26
http://pc12.2ch.net/test/read.cgi/tech/1240567959/
0035デフォルトの名無しさん
垢版 |
2009/05/05(火) 13:11:21
やるよ
問題は11, 12, 13にしてみる
数学的によくわからなくて、解けないというオチにならなければいいが
0036デフォルトの名無しさん
垢版 |
2009/05/05(火) 13:12:39
Project Euler(http://odz.sakura.ne.jp/projecteuler/)のProblem 1を解いてみた。
末尾再帰にはしたけど高速化はしていない。

(define p001
(lambda (n)
(letrec ((p001-aux (lambda (n sum)
(cond
((= n 0)
sum)
((or (= (modulo n 3) 0)
(= (modulo n 5) 0))
(p001-aux (- n 1)
(+ sum n)))
(else
(p001-aux (- n 1)
sum))))))
(p001-aux n 0))))
0037デフォルトの名無しさん
垢版 |
2009/05/05(火) 13:23:38
1番をみて、一般部門を10問にしたけど、11, 12, 13は難しいぞ
自分のプログラム技術で解けるかな
003836(1/2)
垢版 |
2009/05/05(火) 13:43:53
すまん、13:00から勝手に始めてた。Problem 11ね。
(define prod
(lambda (table)
(let ((xmax (vector-length (vector-ref table 0)))
(ymax (vector-length table)))
(let ((lookup (lambda (x y)
(if (and (<= 0 x)
(< x xmax)
(<= 0 y)
(< y ymax))
(vector-ref (vector-ref table y) x)
0))))
(lambda (+x +y)
(lambda (x y)
(* (lookup (+ y (* +y 0)) (+ x (* +x 0)))
(lookup (+ y (* +y 1)) (+ x (* +x 1)))
(lookup (+ y (* +y 2)) (+ x (* +x 2)))
(lookup (+ y (* +y 3)) (+ x (* +x 3))))))))))
(define p011
(lambda (flist xlist ylist)
(apply max
(map (lambda (f)
(apply max
(map (lambda (y)
(apply max
(map (lambda (x)
(f x y))
xlist)))
ylist)))
flist))))
003936(2/2)
垢版 |
2009/05/05(火) 13:49:15
Problem 11の呼び出しの方。やっぱり高速化はしていない。
(define data
#(#(08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08)
#(49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00)
#(81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65)
#(52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91)
#(22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80)
#(24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50)
#(32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70)
#(67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21)
#(24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72)
#(21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95)
#(78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92)
#(16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57)
#(86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58)
#(19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40)
#(04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66)
#(88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69)
#(04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36)
#(20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16)
#(20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54)
#(01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48)))
(display (p011 (list (let ((prod-table (prod data)))
(prod-table 1 0)
(prod-table 0 1)
(prod-table 1 1)
(prod-table 1 -1)))
'(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)
'(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)))
0040デフォルトの名無しさん
垢版 |
2009/05/05(火) 14:10:19
具現化できない
infoを読んでいる時間が長いんだが

というか、あと5分ぐらいで俺は制限時間の1時間だ
思ったより数学・数学していなくて、おもしろいね
11を解いたか、すごいなあ

13をやっているんだけど
答えに近づく解法をしているとは、思いながらやっている
004136
垢版 |
2009/05/05(火) 14:35:32
実はProblem 12も解いたんだけど速度がダメすぎた。
N=500だと1時間以上かかりそう。
0042デフォルトの名無しさん
垢版 |
2009/05/05(火) 14:53:14
おれは無解答で・・・
こういう問題が来るとは思わなかったな

ひさしぶりにSchemeを触ったけど、楽しいね
宿題って感じで毎日1問ぐらいがいいなあ

ググったら、あと解答らしきアドレスをみつけたんですけど、どうしましょうか?
答えの数字のみのやつ

あとコードパットに解答を貼って、リンクしたほうがいいんじゃないかと思う
みんなが平気ならかまわないけど
>>38
tableって39さんと同じ形式?
0043デフォルトの名無しさん
垢版 |
2009/05/06(水) 01:17:51
気付いたらもう終わっているという…
せっかくなので以前書いたProblem 12を高速化してみようかと書き直し始めたら軽く1時間越えた。
途中経過 ttp://paste.lisp.org/display/79705
SBCLでN=1000が6秒くらい。本体の方の工夫が全く書けてないのでもう少し速くなると思う。
0044デフォルトの名無しさん
垢版 |
2009/05/06(水) 09:21:51
>>43
三角数の値を求めるだけの問題だから、問題ないけど
項の値が+1されているね

うちの環境だと15秒だったw
0045デフォルトの名無しさん
垢版 |
2009/05/06(水) 13:17:26
メモ化した意味がなかったので微修正。(26行目あたり)
ttp://paste.lisp.org/display/79738
5倍速くらいになった。あと>>44も修正。
本体の方は変えてもあまり意味ないような気がしてきたからもういいや。
0047デフォルトの名無しさん
垢版 |
2009/05/06(水) 22:16:50
>>45
本体の最後こうすると速くなったよ

    (do ((i 2 (1+ i)))
        ((<= n (if (oddp i)
                   (* (factors-count i) (factors-count (/ (1+ i) 2)))
                 (* (factors-count (/ i 2)) (factors-count (1+ i)))))
         (values (* i (1+ i) 1/2) i)))
004845
垢版 |
2009/05/06(水) 23:01:46
あーそのループは考えてたんだけど単純にかけ算で良かったんだ。
N=1000で0.1秒切るなぁ。すばらしい。
0049デフォルトの名無しさん
垢版 |
2009/05/07(木) 01:40:44
13番の50桁問題、難しくないじゃん
guileで50桁前後の扱えないのかと思っていたら、普通に扱えた
0050デフォルトの名無しさん
垢版 |
2009/05/08(金) 13:11:15
がいらーとごーしゃー のけんか は あるの?
0052デフォルトの名無しさん
垢版 |
2009/05/08(金) 21:44:51
>>51
ふつうによめちゃうなあ
文節をわけて、最初と最後を強調して、錯覚させているのもあるし、ひらがなもそうだよね
0053デフォルトの名無しさん
垢版 |
2009/05/09(土) 00:59:05
>>51
もう誰か作ってたよ、はてなの誰かのブログでみた。
0055デフォルトの名無しさん
垢版 |
2009/05/09(土) 09:36:16
プロジェクトオイラーの問題11をCで解いてしまいますた。

問題12はclispで20秒で解けた
答えは12375番目の76576500という三角数です。

プログラムは ↓

(defun dv-sub (n)
(do ((x 1 (1+ x)) (y n) (a nil))
((>= x y) a)
(if (= (mod n x) 0)
(progn
(setf a (cons x (cons (/ n x) a)))
(setf y (/ n x))))))
(time
(do* ((x 2 (1+ x)) (y 3 (+ y x)) (a (dv-sub y) (dv-sub y)))
((> (length a) 500) (format t "~A ~A~%" x y)))
)
0068デフォルトの名無しさん
垢版 |
2009/11/12(木) 18:14:52
GIMPスレでも聞いたんですが、scheme周りなのでこちらの方がいいと判断して質問しました。
GIMP2.6で、schemeを用いてファージー選択→スポイト→選択箇所塗りつぶし→ガウシアンぼかしの流れを
一括で処理するようなものを組みたいのですが可能なんでしょうか?
0078デフォルトの名無しさん
垢版 |
2010/04/20(火) 00:20:30
下記サイトのscript-fuを調べて、改良したものを作りたいと思って
本やサイト調べてもどうしても意味のわからない部分があるんですが、
聞いてもいいですかね?

ttp://www.rpi.edu/dept/acm/packages/gimp/gimp-1.2.3/plug-ins/script-fu/scripts/line-nova.scm

7行目の (let* ((*points* (cons-array (* 3 2) 'double))は何やっているのか(特にdoubleの意味)
17行目の (define (draw-vector beg-x beg-y direction)の引数?の詳細
33行目の (define (set-marginal-point beg-x beg-y direction) のset-marginal-point
40行目の (aux dir1 1)のauxの意味

 どうか頼みます。
こういうのscmを調べるのに役立つサイトに心当たりがあるのでしたら、教えてください。
0079デフォルトの名無しさん
垢版 |
2010/04/20(火) 01:43:41
>>78
Gimp も Scheme も大して知らない俺でも分かる範囲で…

>7行目の (let* ((*points* (cons-array (* 3 2) 'double))は何やっているのか(特にdoubleの意味)

cons-array は配列を作る関数。(* 3 2) は 3 * 2 = 6 で、配列の要素数が 6 個という意味。
'double は型指定で配列に格納されるデータが double 型という事。
つまり (cons-array (* 3 2) 'double) は double 型で要素数が 6 個の配列を確保している。
let は代入(本当は束縛)で、*points* という変数(本当はラベル)にこの配列を格納している。

最近の GIMP は Guile から TinyScheme に置き換わったから、cons-array の代わりに
make-vector を使います。
0080デフォルトの名無しさん
垢版 |
2010/04/20(火) 02:16:35
>>78
>17行目の (define (draw-vector beg-x beg-y direction)の引数?の詳細
>33行目の (define (set-marginal-point beg-x beg-y direction) のset-marginal-point
>40行目の (aux dir1 1)のauxの意味

残りは Scheme というより、そのプログラムの中での命名の話。
beg-x => begin-x : 線分の始点の x 座標
beg-y => begin-y : 同じく y 座標
set-marginal-point => marginal(境界、ふち)の point(座標)を set する
aux => auxiliary : 補助関数
008278
垢版 |
2010/04/20(火) 20:06:09
結構古いものなので仕様変更で、今では絶滅危惧種な関数かと
考えていましたが、意味がわかってすっきりしました。
これで解析も何とかなる(かな?)と思います。

本当にありがとうございました!

0084デフォルトの名無しさん
垢版 |
2010/09/05(日) 11:17:00
>>83

残念sage
2010-09-04
GNU Guile 1.9.12 (beta) released. Again, this may be the last release before 2.0 comes out.
RCとなるまで期待しちゃダメなのか?
0088デフォルトの名無しさん
垢版 |
2010/12/16(木) 20:27:06
2009-07-05
GNU Guile 1.8.7 released. This is the next maintenance release for the 1.8 stable series.

1.8 は1年半ぶりか
0094デフォルトの名無しさん
垢版 |
2011/06/07(火) 11:15:53.93
使い始めたage
結構ライブラリが充実してるんだね
0095デフォルトの名無しさん
垢版 |
2011/06/26(日) 15:16:10.35
ttp://www.csg.is.titech.ac.jp/~chiba/lecture/cur/cs2/cs11.html
この問題が分かりません。。解答お願いします。
0097デフォルトの名無しさん
垢版 |
2011/07/06(水) 22:15:54.01
例えば楽天のページでお目当ての転売商材があって、人が殺到してエラーのページが出ます

売り切れる前になんとかしたい

で、スクリプトを使って攻略するにはどうすればいいですか?
0100デフォルトの名無しさん
垢版 |
2012/01/26(木) 08:23:51.61
へえ
0103デフォルトの名無しさん
垢版 |
2012/08/27(月) 00:32:55.42
cygwinでビルドが通らない。
libffiが無いといわれる。
0106デフォルトの名無しさん
垢版 |
2013/10/31(木) 13:20:35.22
ケツが痒い
0111デフォルトの名無しさん
垢版 |
2017/01/12(木) 12:20:38.33ID:/vx64swE
gimpの処理自動化したいと思ってscheme勉強し始めたけど目的が明確化してる分勉強するの楽しい
あと知識が深まると今まで分からなかったところがこういうことかと発見できるのも楽しい
0114_
垢版 |
2017/12/04(月) 13:40:38.84ID:D1OWyPQA
Guile 2.2.3リリースされてたど〜
ttps://lists.gnu.org/archive/html/guile-devel/2017-12/msg00000.html
0115デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:08:16.21ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

FQNK5
0116デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:48:43.19ID:RfoszcD2
XDV
0118デフォルトの名無しさん
垢版 |
2021/12/03(金) 07:56:37.61ID:W4uBSINU
linuxベッタリの異端なschemeと思ったらintrospectionが充実してて割とお気に入り、かも
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況