(setq ary '((A . 1) (B . 2) (C . 3)))
で、perlでの
$ary{'A'}++; や
$ary{'B'}='X' や
$ary{'C'}=$ary{'A'}+5;
ということをさせたいのですが、LISPではどう書くのでしょうか?
(assoc 'A ary)
2
(assoc 'B ary)
X
(assoc 'C ary)
7
という結果が欲しいです。
また、一度にaryの内容を表示させる Data::DumperのようなものはLISPにあるのでしょうか?
処理系はCommon LISPです。
No.1ベストアンサー
- 回答日時:
(setq ary '((A . 1) (B . 2) (C . 3)))
(defun sample ()
;;(print ary)
(setf
(cdr (assoc 'A ary))
(1+ (cdr (assoc 'A ary))))
(setf
(cdr (assoc 'B ary))
(* 2 (cdr (assoc 'B ary))))
(setf
(cdr (assoc 'C ary))
"mogera")
;;(print ary)
)
c:\tmp\0519>clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2006
[1]> (load "sss.l")
;; Loading file sss.l ...
;; Loaded file sss.l
T
[2]> (pprint ary)
((A . 1) (B . 2) (C . 3))
[3]> (pprint #'sample)
#<FUNCTION SAMPLE NIL (DECLARE (SYSTEM::IN-DEFUN SAMPLE))
(BLOCK SAMPLE (SETF (CDR (ASSOC 'A ARY)) (1+ (CDR (ASSOC 'A ARY))))
(SETF (CDR (ASSOC 'B ARY)) (* 2 (CDR (ASSOC 'B ARY))))
(SETF (CDR (ASSOC 'C ARY)) "mogera"))>
[4]> (sample)
"mogera"
[5]> (pprint ary)
((A . 2) (B . 4) (C . "mogera"))
[6]>
No.2
- 回答日時:
以下はxyzzyでの実行結果です。
----
(setq ary '((A . 1) (B . 2) (C . 3)))
((A . 1) (B . 2) (C . 3))
(mapcar #'(lambda (list) (cond ((eq 'A (car list)) (cons (car list) (1+ (cdr list)))) (t list))) ary)
((A . 2) (B . 2) (C . 3))
----
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) ZWCAD CUIXとLISPの関係について 1 2022/09/28 03:07
- C言語・C++・C# Lispの、evalはどのようにすごいですか? 3 2022/09/12 21:46
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- その他(プログラミング・Web制作) python の課題で困ってます。 num=【1,2,8,6】という配列がある。 insert(2, 2 2023/05/24 21:56
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PerlでCabochaを呼び出すには(...
-
Perlの書き方について
-
連想配列とforeach
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
int(input("○○"))の使い方
-
<SELECT>タグの折り返し
-
実行時エラー 3020の対策
-
16進の10進変換について
-
PICで世界時計を作りたいのですが
-
プルダウンメニューで中央表示
-
文字の横にプルダウンを表示さ...
-
perl言語について
-
構造体の変数の値を、動的に取...
-
シェルスクリプトで、空白(ス...
-
セレクトメニューで2つの項目...
-
「*:*」って何を意味するのでし...
-
掲示板からのメールの本文中に...
-
optionのselectedは更新時は効...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CLispのloop内の挙動について
-
Perlで複数の値を返す良い方法...
-
プロトタイプ宣言のワーニング...
-
ハノイの塔の問題で困っており...
-
dieやPerl自体でエラーが発生し...
-
Net::Telnetでタイムアウト時間...
-
print <<"_HTML_"の中でサブル...
-
Net::SSH::Perlについて
-
Win98+PWS4.0でPERLが動作しま...
-
Rubyのgets関数について
-
Perlで use strict して our変数
-
[perl] next と return 同じ意...
-
Perlで自分自身の関数名を知る...
-
Pythonのプログラミングの質問...
-
icmp socket error
-
threads を使ったマルチスレッ...
-
変数に値を代入するのに、まずu...
-
これは動いてくれますか??
-
HASH(0xほげほげ)
-
10進数→2進数
おすすめ情報