【入門】Common Lisp その4【質問よろず】at TECH
【入門】Common Lisp その4【質問よろず】 - 暇つぶし2ch850:デフォルトの名無しさん
08/06/10 05:25:16
あえてコモンリスプ以外で書いたのですね
わかります

851:デフォルトの名無しさん
08/06/10 05:45:51
>>847
SRFI-42マジオススメ。

852:デフォルトの名無しさん
08/06/10 06:34:36
>>840-851
ありがとうございます。
C言語では
#include <stdio.h>

int main(void){
int a,b=1;
printf("start:");
scanf("%d",&a);
while(b<=a){
if(a%b==0){
printf("%d¥n",b);
b=b+1;
}
else{
b=b+1;
}
}
return 0;
}

となりました。
「Lisp脳」という言葉を使ったのは
偉大なLispHackerの皆さんは意外なそして美しいコードで
いつも解決しているので、何か簡潔な方法が有るのではと思い使いました。

853:デフォルトの名無しさん
08/06/10 07:44:36
>>852
それは「早すぎる最適化」かもしれない
より良い方法を探すのは、必要に迫られてからでよい
それに、探し出すよりも偶然見つかることのほうが多い

854:デフォルトの名無しさん
08/06/10 09:41:37
(defun yakusuu (n)
  (let ((head '()) (tail '()))
    (loop for i from 1 to (sqrt n)
          if (zerop (mod n i)) do
      (push i head)
      (push (/ n i) tail))
    (nreconc (if (= (car head) (car tail)) (cdr head) head)
             tail)))

855:デフォルトの名無しさん
08/06/10 10:16:09
mod関数はCommonLispでも使えるんですね!!
余りを出す関数があると自力でも出来そうです

856:855
08/06/10 17:35:22
できました
皆さん本当にありがとうございました!!

(defun numlist (x)
(let ((nlist '()) (i 1))
(loop (if (> i x) (return (reverse nlist))
(if (= (mod x i) 0)
(progn (push i nlist) (incf i 1))
(incf i 1))))))

857:デフォルトの名無しさん
08/06/10 18:15:28
>>856
よかったな。これからもcommon lispをかわいがってやってください。
甘えすぎは非難の元だけど、分からなかったらいつでもおいでね。

858:デフォルトの名無しさん
08/06/10 21:30:08
>>856-857
名作みたいな展開。

859:デフォルトの名無しさん
08/06/11 07:32:31
WindowsでCLISPをやりたいと思って、
EclipseでCUSPをいれてちょこちょことやってるんだけど、
GUIとか、もうちょっとDLLを呼び出して、DirectXを操作とかとなると大変?
GUIだとなんか幾つかそれっぽいのが見つかるんだけど(MacOSXとかLinux・Unixが目立つが)
DLLを呼び出すのは無理??

860:入ってしまえば天国なんだね…。
08/06/11 11:01:38
LISPに最初から挫折しそうになって、あちこち見ています。

使用者例が少なすぎて発想パターンを断言できないけど、
思考‐発想タイミングから言えば基本的に敷居「だけ」が
高い言語のようだし、初心者を甘やかしても良さそう。

ところで、この言語で言えば印欧語族のロシア語みたいな
性格を見て今、ぐぐってみたんだが…ちょw大当たりww
これは…すごいのはキャラが立ってるLISPだなwww

これが、印欧語族の中では英語的なC言語系だと…
ぐぐってみた…ごめん、もう何も言う事ないwwww
(英語は「敬語」を始め、高度習得が困難です。)

対照的すぐる…(もうちょいがんばれば、あるいは…?

861:デフォルトの名無しさん
08/06/11 11:15:00
独り言はチラシの裏かnotepad.exeに書けよ。

862:デフォルトの名無しさん
08/06/11 11:17:59
というかどう見てもbotです
本当にありがとうございました

863:デフォルトの名無しさん
08/06/11 14:37:43
英語とかロシア語に例えるから挫折しそうになるんじゃないのかなw

864:デフォルトの名無しさん
08/06/11 16:17:05
>>859
cffiではdllをよべるみたいだが、詳しくはonjoさんところみてくれ。
URLリンク(lispuser.net)

865:デフォルトの名無しさん
08/06/11 16:50:56
Lispは素晴らしい言語だと思うのですが
Lispが生き残ってるのはEmacsのおかげ
実用には耐えないが一部ハッカーの趣味で使われている
など否定的な意見のみが見られてイマイチ本気になれません
Lispで作られたアプリケーションを教えていただけないでしょうか

866:デフォルトの名無しさん
08/06/11 17:04:59
無理に使う必要はないよ。
アプリは↓この辺ね。
URLリンク(wiki.alu.org)

それから独断で単純に割り切って無視しようとするのは、
プログラマとしてはそんな性格だよ。
よいところはどんどん吸収するようにしないと頭が固くなる。

867:デフォルトの名無しさん
08/06/11 17:19:56
>>865
emacs

868:デフォルトの名無しさん
08/06/11 17:38:58
>>866
ありがとうございます。
自分としては気に入っているのですが
周りがそんな事をいってくるので
ちなみにLispが向いている方面を教えてください

869:デフォルトの名無しさん
08/06/11 17:56:06
ご自分の発言を良くお読み頂き、
用法・用量を守って、正しくご使用下さい。

870:865
08/06/11 18:19:03
>>869
>Lispは素晴らしい言語だと思うのですが
これが僕の意見
>Lispが生き残ってるのはEmacsのおかげ
>実用には耐えないが一部ハッカーの趣味で使われている
これが周りの意見
>イマイチ本気になれません
Lispいいよねって周りにいうと
「やめとけよ役に立たない」とかいわれるので・・・

871:デフォルトの名無しさん
08/06/11 18:27:46
>>868
お前の人生は何に向いてますか?

>>870
Lispに向いているものをやるもんじゃなくて
解きたい問題をLispで解くもんだ。
フレームワークについての話ならともかく
汎用言語はみんなそんなもんだ。

おまえの人生や周りの事情なんか知らん。

872:865
08/06/11 18:33:31
>>871
ありがとうございます。
たとえば望んでいたreplyはLispでMacOSXで動作するGUI動画再生ソフトは
作りづらいとおもうのですが
そんな感じでどちらかというとこんな感じのを作るときには
苦労するよというようなものだったのです
すいませんでした

873:デフォルトの名無しさん
08/06/11 18:38:08
自分で良い物を判断できないってのは、現代の病なのか?

874:デフォルトの名無しさん
08/06/11 18:51:39
>>872
>MacOSXで動作するGUI

ここ何か意味あるの?
Mac OS X 上の Lisp 環境は他のプラットフォームと遜色ないし、
Cocoa を呼び出すのも他の言語に比べて難しいとは思わないけど。

875:デフォルトの名無しさん
08/06/11 19:16:43
ぅぁ…半分寝てた時の文だw
ときどきイルカ状態になるんだ…orz
(特定能力だけ寝てる。脳内血行が偏る珍体質。
 血流検査結果見たら昔の級友は爆笑&納得)
吊って来る… ああ、LISPって論理綺麗だな…

876:デフォルトの名無しさん
08/06/11 19:33:21
病院行け。

877:デフォルトの名無しさん
08/06/11 19:44:20
自分が良いと思っても周りがそうでないならばそれに迎合してしまうおれはチキンorz

878:デフォルトの名無しさん
08/06/11 19:47:34
>ぅぁ…半分寝てた時の文だw
責任転嫁がお上手ですね。
その調子で残りの人生も済むといいね。


879:デフォルトの名無しさん
08/06/11 19:54:32
>>872
mcl系をしらべたらいい。最近フリーになったし。また、
closure cl(旧openMCL)はMACのGUIに合わせてるよ。

880:859 [・∀・]
08/06/11 20:05:25
>>864さん ありがとうございました。
これから、ちょっとづつ弄くって勉強してみます。

881:デフォルトの名無しさん
08/06/11 20:12:00
>>875
スレリンク(tech板:662-666番)

眠い時に書きまくるなよ。



882:デフォルトの名無しさん
08/06/11 21:47:51
>>875
そのレスも半分寝てるようだな

883:デフォルトの名無しさん
08/06/11 22:13:57
>>875
その特異能力を生かして、普通のやつらの斜め上を行ってください。
きみならできる。

884:デフォルトの名無しさん
08/06/11 22:31:41
>>883
ナナメかよ!


885:865
08/06/11 23:15:16
>876-884
なんだか皆さんの雰囲気をみだしてしまったようですいません
なんだか気になるので一応かいておきますが>>865>>875ですよ

886:デフォルトの名無しさん
08/06/12 22:14:13
URLリンク(www.bk1.jp)

Practical Common Lispの日本語版がとうとうでるみたいだね。原著の
評判はかなりいいので楽しみですね。
今は洋書の値段も上昇ぎみだって時だから、5000円って高価だけど
和書のほうが易くすみそうですね。
個人的には原著を持ってるのでかわないけど、訳が素晴らしければ
おすすめできますよ。でもね。なまえをみてonjoさん(lispuse.netの中
の人)でしょ。それなら予約しても大丈夫だと思う。

887:デフォルトの名無しさん
08/06/12 22:17:02
訳者も出版社も勇気あるなあ
モニタに向かってPDFで読むの好きじゃないから出たら買わせてもらうよ

888:デフォルトの名無しさん
08/06/12 23:12:11
訳書のタイトルは『実用Common Lisp』になるのかな、と思ってたけど、違ってたか。

889:デフォルトの名無しさん
08/06/12 23:23:41
表紙が心配だな

890:デフォルトの名無しさん
08/06/12 23:31:58
まだ翻訳作業中?らしいんだが来月ってマジか?

891:デフォルトの名無しさん
08/06/12 23:43:13
Schemeと違って教科書採用もあてにできないし、数がでないから高いんだろうな…。


892:デフォルトの名無しさん
08/06/12 23:49:45
サイズは書いてないけど、原書の太さを考えるとそこそこの太さになるんじゃないか?

893:デフォルトの名無しさん
08/06/13 00:45:05
原書が昨日届いたばかりだ。

894:865
08/06/13 20:01:45
CommonLispで使用できるライブラリはどこで確認できるのでしょうか

895:デフォルトの名無しさん
08/06/13 20:25:20
aproposとかdescribeの事?
それともHyperspecの方?
プロダクト探すんだったらclikiとか?



896:デフォルトの名無しさん
08/06/13 20:58:15
>>895
回答ありがとうございます。
現状では関数を羽で作っているだけなので
これからCommonLispで本格的にアプリケーションを作るにあたり
利用できるライブラリは利用する方が便利ですし、
ライブラリのソースコードをみて学習することで自分の学習にもなりますので
下さったページで学んでみたいと思います。
ありがとうございました。

897:デフォルトの名無しさん
08/06/14 13:17:23
「実践Common Lisp」の出版日は7月何日なんだろう?

898:デフォルトの名無しさん
08/06/17 00:25:52
timeマクロで,関数単位でベンチが取れますが.
値はprintで表示されてしまいますよね.
これをプログラムの中に取り込んで加工したいのですが,その場合
どうすればいいのでしょうか?

899:デフォルトの名無しさん
08/06/17 02:38:53
printを再定義すればおk

900:デフォルトの名無しさん
08/06/17 04:14:40
*standard-output*に何か別のストリームつっこんで取り出しちゃえば?



901:デフォルトの名無しさん
08/06/17 07:19:49
time の結果なら
(with-output-to-string (*trace-output*) (time ...))
print した値なら
(with-output-to-string (*standard-output*) (time ...))
でどうだろう。


902:デフォルトの名無しさん
08/06/19 22:01:53
マクロで(newaddres x y z)と入力すると
(setf (get 'x 'y) 'z)と属性リストに代入することができるようにする
マクロはどのように実現すれば良いのでしょうか

903:デフォルトの名無しさん
08/06/19 22:24:32
(defmacro newaddres (x y z) `(setf (get ',x ',y) ',z))
だが、本当にあなたがやりたい事はマクロが必要なのかな?
(defun f (x y z) (setf (get x y) z))
でもいいんじゃないの?

904:デフォルトの名無しさん
08/06/19 23:11:17
>>903
>(defmacro newaddres (x y z) `(setf (get ',x ',y) ',z))
ありがとうございます。
',の部分がわからなかったので助かりました。
>(defun newaddres (name title contents) (setf (get name title) contents))
としたのですが
定義した後(newaddres tanaka live yokohama)とするとTANAKA has no value と言うエラーが出てしまいます。

905:デフォルトの名無しさん
08/06/20 01:23:30
それだと、tanakaというシンボルを評価した結果 == 未定義な変数TANKAを参照しちゃう。評価を止めるには、'クォートをつける。
(newaddres 'tanaka 'live 'yokohama)
クォートするのが面倒だって?だが、評価を ' で ON/OFF できるっつーことはだ、↓のようにできるってこと。
(setf yokohama-list '(tanaka yamada sato steve))
(dolist (who yokohama-list)
(newaddress who 'live 'yokohama))
そもそもシンボル?評価?意味不明というならまた別途説明するよ。

906:デフォルトの名無しさん
08/06/20 09:51:27
いや、結構です。

907:デフォルトの名無しさん
08/06/20 15:10:49
>>906
やめて下さいよ
違う人がレスするのは

908:デフォルトの名無しさん
08/06/20 15:13:59
そういう用途にシンボル使う時は、印字表現に注意。特に空白。

909:デフォルトの名無しさん
08/06/20 18:31:41
scをみたけど、
巷にはcでlispインタプリタを作ってみたって人は多い。逆に
lispでcインタプリタを作ってみたという人はきいたことがないな。
作る必要もないものね。

910:デフォルトの名無しさん
08/06/20 21:58:18
てか不可能。

911:デフォルトの名無しさん
08/06/20 22:00:45
cでcインタプリタは昔Cマガで見たな。
c++ならまだしもcのインタプリタなんて教育用途でも微妙だと思ったが。

912:デフォルトの名無しさん
08/06/20 22:32:10
>>910
理由は?

# 「性能とかの実用性は度外視して」が前提だが。

913:デフォルトの名無しさん
08/06/20 22:40:25
Cインタプリタくらいあるだろ
URLリンク(wiki.osdev.info)

914:デフォルトの名無しさん
08/06/20 22:59:40
2進数を10進数に変換する関数なのですが
(defun two2ten (x)
(let ((n 0) (goukei '()))
(loop (if (< (1- (length x)) n) (return (lsadd goukei))
(progn (push (lsadd (mapcar #'(lambda (a) (* a (expt 2 n))) x)) goukei) (1+ n))))))

と言う関数がどこかが終わらないのか15秒ほど待ってみても答えが出ません。
何処に原因が有るのかおしえていただけませんでしょうか?

lsadd:与えられたリストの全要素の合計を数で返す関数
自作ですがこれは確実に動作します。
xはリスト形式で式に与えています。(1 0 0 1 1 0)の様な形式です。



915:デフォルトの名無しさん
08/06/20 23:41:06
>>914
下を見れば分かるかな。その変数 n を出力してみるといいよ。
1+ だけじゃ値は増えてないから。

cl-user(12): (setq x 10)
10
cl-user(13): (1+ x)
11
cl-user(14): x
10


916:デフォルトの名無しさん
08/06/20 23:59:58
>>715
ありがとうございます。
忘れてしまっていました。
ありがとうございます。


917:デフォルトの名無しさん
08/06/21 00:21:57
忘れるなよ。

918:デフォルトの名無しさん
08/06/21 07:42:57
LispでDLLを作って他のプログラムから呼び出すことはできますか?

919:デフォルトの名無しさん
08/06/21 08:10:47
LispWorks, ECL はできるよ。CLISP, SBCL はできない。他の処理系はしらない。

920:デフォルトの名無しさん
08/06/21 19:38:23
CommonLispのメーリングリストを開設しようと思うのですが
Yahooの提供サービスで良いのでしょうか
YahooIDをお持ちでない先輩がいらっしゃるといけないので

921:920
08/06/21 19:43:34
GoogleMLは広告が入らないそうなのでこちらも良さそうなのですが
これについても上と同様の質問についてお答え願います。



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch