{"id":50,"date":"2006-10-23T14:21:27","date_gmt":"2006-10-23T14:21:27","guid":{"rendered":"http:\/\/newblog.mix1009.net\/?p=50"},"modified":"2006-10-23T14:21:27","modified_gmt":"2006-10-23T14:21:27","slug":"slime-%ec%82%ac%ec%9a%a9%eb%b0%a9%eb%b2%95","status":"publish","type":"post","link":"https:\/\/mix1009.net\/?p=50","title":{"rendered":"SLIME \uc0ac\uc6a9\ubc29\ubc95"},"content":{"rendered":"<p>M\uc740 \uba54\ud0c0(Alt)\ud0a4, C\ub294 Ctrl\ud0a4.<\/p>\n<p>Emacs\ub4e0 vi \ub4e0 caps lock\uc740 Ctrl\ub85c \ubc14\uafd4 \uc4f0\ub294\uac8c \ud3b8\ud569\ub2c8\ub2e4.<\/p>\n<p>Emacs\uc758 \uae30\ubcf8\uc801\uc778 \uc0ac\uc6a9\ubc95\uc740 \uc54c\uace0 \uc788\ub2e4\uace0 \uac00\uc815\ud558\uace0 \uc124\uba85\ub4e4\uc5b4\uac11\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc708\ub3c4\uc6b0\uc988\uc5d0\uc11c Emacs, CLISP, Slime \uc778\uc2a4\ud1a8 \ubc29\ubc95\uc740 <a href=\"http:\/\/mix1009.net\/38\">\uc774\uc804 \uae00<\/a>\uc744 \ucc38\uace0\ud558\uc138\uc694.<\/p>\n<p>Emacs\ub97c \uc2dc\uc791\ud558\uace0 &#8220;M-x slime&#8221;\uc73c\ub85c slime\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4. \uc7a0\uae50 \uae30\ub2ec\ub9ac\uba74 REPL (Read-Evaluate-Print Loop)\uac00 \ub739\ub2c8\ub2e4. Slime\uc740 \ud06c\uac8c \ub450\uac00\uc9c0 \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub294\ub370, Common Lisp\ub85c \ub3cc\uc544\uac00\ub294 \uc11c\ubc84 \ubd80\ubd84(Swank)\uacfc, Emacs Lisp\ub85c \ub3cc\uc544\uac00\ub294 Front-end \ubd80\ubd84\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc124\uc815\uc5d0 \ub530\ub77c\uc11c Swank\ub97c \uc11c\ubc84\ucabd\uc5d0 \ub744\uc6b0\uace0 \ub85c\uceec\uc5d0\uc11c Emacs\uc640 Slime Client\ub97c \ub744\uc6b0\uace0 \uc791\uc5c5\ud560\uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>REPL\uc5d0\uc11c Lisp expression\uc744 \uccd0\uc11c \uac04\ub2e8\ud55c \uc791\uc5c5\uc744 \ud560\uc218 \uc788\uc9c0\ub9cc, \ubcf8\uaca9\uc801\uc778 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc704\ud574\uc11c\ub294 \ud30c\uc77c\ub85c \uc791\uc5c5\ud574\uc57c \ud3b8\ud569\ub2c8\ub2e4. \uba3c\uc800 C-x C-f\ub85c \uae30\uc874 \ud30c\uc77c\uc774\ub098 \uc0c8\ud30c\uc77c\uc744 \uc5f4\uace0 Lisp \ucf54\ub4dc\ub97c \uc9dc\uba74 \ub429\ub2c8\ub2e4. \uc6d0\ud558\ub294 S-exp\uc744 REPL\uc5d0\uc11c \uc2e4\ud589\ud558\ub3c4\ub85d \ubcf4\ub0b4\ub294 \ub2e8\ucd95\ud0a4 \uba87\uac1c\ub294 \uc9c0\uc18d\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\uac8c \ub418\uace0\uc694, Lisp \ucf54\ub4dc\ub97c \ud3b8\uc9d1\ud560\ub54c \uc27d\uac8c \ud574\uc8fc\ub294 \ub2e8\ucd95\ud0a4\ub4e4\uc774 \ub9ce\uc740\ub370, \uc54c\uc544\ub450\uba74 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. \ubaa8\ub4e0 \ub2e8\ucd95\ud0a4\ub97c \uc124\uba85\ud55c \uac83\uc740 \uc544\ub2c8\ub2c8 \uc790\uc138\ud55c\uac74 slime \uba54\ub274\uc5bc\uc744 \uad6c\ud574\uc11c \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>C-c C-c<\/strong>: \ud604\uc7ac top level form\uc744 \ucef4\ud30c\uc77c\ud569\ub2c8\ub2e4. \uc8fc\ub85c defun, defmacro\ub4f1\uc744 \ub4f1\ub85d\ud560\ub54c \uc0ac\uc6a9.\n<li><strong>C-x C-e<\/strong>: \ud604\uc7ac \ucee4\uc11c \ubc14\ub85c \uc774\uc804 expression\uc744 \uc2e4\ud589(Evaluate)\ud569\ub2c8\ub2e4. \ub514\ubc84\uae45\ud560\ub54c \uc720\uc6a9\ud569\ub2c8\ub2e4.\n<li><strong>C-M-x<\/strong>: \ud604\uc7ac top level form\uc744 \uc2e4\ud589(Evaluate)\ud569\ub2c8\ub2e4. \ub9ac\ud134\uac12\uc774 \ubc11\uc5d0 \ud45c\uc2dc\ub418\uace0 \ud55c\ubc88\uc5d0 \uc785\ub825\ud560\uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \ub9ce\uc774 \uc501\ub2c8\ub2e4.\n<li><strong>C-c C-z<\/strong>: REPL\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. \uc774\ub54c \ud654\uba74\uc774 \ub098\ub220\uc9c0\ub294\ub370, <strong>C-x o<\/strong>\ub85c \uc591 \ucc3d\uc744 \uc774\ub3d9\ud560\uc218 \uc788\uc2b5\ub2c8\ub2e4.\n<li><strong>TAB<\/strong>: \ud604\uc7ac\uc904\uc744 indent\ud569\ub2c8\ub2e4. \uc5ec\ub7ec\uc904\uc744 \uc785\ub825\ud560\ub54c \ub2e4\uc74c\uc904\ub85c \ub118\uc5b4\uac08\ub54c \ud56d\uc0c1 TAB\ub97c \ub20c\ub7ec \uc8fc\ub294\uac8c \uc88b\uc2b5\ub2c8\ub2e4. \uc548\uadf8\ub7ec\uba74 \uc790\ub3d9 \uad04\ud638 \ub2eb\uae30 \uae30\ub2a5\ub4f1\uc774 \ube44\uc815\uc0c1\uc801\uc73c\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4.\n<li><strong>C-j<\/strong>: \ub2e4\uc74c\uc904\ub85c \uac00\uc11c indent\ud569\ub2c8\ub2e4. Enter \ub204\ub974\uace0 TAB \ub204\ub974\ub294\uac83\uacfc \uac19\uc2b5\ub2c8\ub2e4. \uc775\uc219\ud574\uc9c0\uba74 \ud3b8\ud558\uc8e0.\n<li><strong>C-c C-q<\/strong>: \uc5f4\ub9b0 \uad04\ud638\ub97c \ubaa8\ub450 \ub2eb\uc2b5\ub2c8\ub2e4.\n<li><strong>C-c M-q<\/strong>: \ud604\uc7ac form\uc744 \uc790\ub3d9 indent\ud569\ub2c8\ub2e4.\n<li><strong>C-c C-k<\/strong>: \ud604\uc7ac \ud30c\uc77c\uc744 \ucef4\ud30c\uc77c&amp;\ub85c\ub4dc \ud569\ub2c8\ub2e4.\n<li><strong>M-.<\/strong> : \ud574\ub2f9 definition\uc73c\ub85c \uc774\ub3d9\n<li><strong>M-,<\/strong> : \uc774\uc804\uc73c\ub85c \uc774\ub3d9\n<li><strong>C-c C-d h<\/strong>: \ud604\uc7ac \ub2e8\uc5b4\ub97c hyperspec\uc5d0\uc11c \ucc3e\uc544\ubd05\ub2c8\ub2e4.\n<li><strong>C-c TAB <\/strong>\ub610\ub294 <strong>C-M-i<\/strong> : autocompletion. \ub204\ub974\uba74 \ucc3d \ub098\ub220\uc9c0\uba74\uc11c \ud3ec\ucee4\uc2a4 \ub2e4\ub978 \ucc3d\uc73c\ub85c \uc774\ub3d9\ud558\ub294\ub370 \uc5ec\uae30\uc11c C-n,C-p \ub4f1\uc73c\ub85c \uc6d0\ud558\ub294 \ub2e8\uc5b4 \uc120\ud0dd\ud574\uc11c Enter\uce58\uba74 \uc644\uc131\ub418\uace0, q\ub97c \ub204\ub974\uba74 \ucde8\uc18c\ub429\ub2c8\ub2e4.\n<li><strong>C-c M-i<\/strong> : fuzzy autocompletion. with-output-file\uc744 \ube68\ub9ac \uce60\ub54c wof\ud558\uace0 C-c M-i\uce58\uba74 w*-o*-f*\ub85c \ub418\uc5b4\uc788\ub294 \uac70\ub3c4 \ud3ec\ud568\ub418\uc5b4 \uc120\ud0dd\ud560\uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac8c \uc6d0\ub798 autocompletion\ubcf4\ub2e4 \ud3b8\ud574\uc11c .emacs\uc5d0\uc11c \ub514\ud3f4\ud2b8\ub85c \ubcc0\uacbd\ud574\uc11c \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\n<li><strong>C-M-n, C-M-p <\/strong>: expression \ud558\ub098\uc529 \uc55e\ub4a4\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. <strong>C-M-u<\/strong>\uc740 \uc0c1\uc704\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.\n<li><strong>C-c Enter<\/strong> : Macro Expand-1. \ub9e4\ud06c\ub85c \uc9e4\ub54c \ud544\uc218\uc8e0. <\/li>\n<\/ul>\n<p>\uc5ec\uae30\uae4c\uc9c0\uac00 \uc5d0\ub514\ud130\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uba85\ub839\ub4e4\uc774\uace0, REPL\uc5d0\uc11c\ub3c4 \uc5d0\ub514\ud130\uc5d0\uc11c \uc0ac\uc6a9\ud560\uc218 \uc788\ub294 \ub2e8\ucd95\ud0a4\ub4e4\uc774 \ub300\ubd80\ubd84 \uadf8\ub300\ub85c \ud1b5\ud569\ub2c8\ub2e4. \ucd94\uac00\uc801\uc73c\ub85c<\/p>\n<ul>\n<li><strong>Enter<\/strong>: Evaluate\n<li><strong>C-Enter<\/strong>: \uad04\ud638 \ub2eb\uace0 Evaluate\n<li><strong>Shift-Enter<\/strong>: Eval\ud558\uc9c0 \uc54a\uace0 \ub2e4\uc74c\uc904\ub85c \ub0b4\ub824\uac11\ub2c8\ub2e4.\n<li><strong>C-\u2191<\/strong>, <strong>C-\u2193<\/strong>, <strong>M-p<\/strong>, <strong>M-n<\/strong> : \ud788\uc2a4\ud1a0\ub9ac \uae30\ub2a5\n<li><strong>,q<\/strong> : SLIME \uc885\ub8cc (Swank\ub3c4 \uc885\ub8cc)<\/li>\n<\/ul>\n<p>\ub2e4\uc74c\uc740 \ub514\ubc84\uae45 \uad00\ub828 \ub2e8\ucd95\ud0a4\uc785\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>C-Shift-i<\/strong>: inspect. \uc6d0\ud558\ub294 \ubcc0\uc218\ub4f1\uc5d0\uc11c \ub204\ub974\uba74 \uc790\uc138\ud55c \uc815\ubcf4\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.\n<li><strong>Ctrl-c Ctrl-t<\/strong>: trace. \uc6d0\ud558\ub294 \ud568\uc218\uc774\ub984\uc5d0\uc11c trace\uae30\ub2a5\uc744 \ucf1c\uace0 \ub04c\uc218 \uc788\uc2b5\ub2c8\ub2e4. trace \uae30\ub2a5\uc774 \ucf1c \uc788\uc73c\uba74 \ud574\ub2f9 \ud568\uc218\uac00 \ud638\ucd9c\ub420\ub54c \uc778\uc790\uc640 \ub9ac\ud134\uac12\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4. trace\ub41c \ud568\uc218\ub4e4\uc744 \ubaa8\ub450 \ud06c\uae30 \uc704\ud574\uc11c\ub294 REPL\uc5d0\uc11c (untrace) \ud558\uba74 \ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc2e4\ud589(Evaluation)\uc911 \uc624\ub958\uac00 \ub098\uba74, \ub514\ubc84\uac70\uac00 \ub739\ub2c8\ub2e4. \ub9e8\uc704\uc5d0 \uc624\ub958\uac00 \uc124\uba85\ub418\uace0, \uadf8 \ubc11\uc5d0 \uc7ac\uc2dc\uc791, \ub05d\ub0b4\uae30\ub4f1 \uc2e4\ud589 \uc7ac\uac1c\uc5d0 \ub300\ud55c \uba54\ub274\uac00 \ub098\uc635\ub2c8\ub2e4. \uc67c\ucabd\uc5d0 \uc22b\uc790\ub97c \uc785\ub825\ud558\uba74 \uba54\ub274\uac00 \uc120\ud0dd\ub418\uc9c0\ub9cc, \uc22b\uc790\uc5d0 \ub300\ud55c \uba54\ub274\uac00 \uc77c\uc815\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \ub2e4\ub978 \ub2e8\ucd95\ud0a4\ub97c \uc54c\uc544\ub450\ub294\uac8c \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>q<\/strong>: \uc885\ub8cc (quit)\n<li><strong>0<\/strong>: \uc2a4\ud0dd \ud55c\ub2e8\uacc4 \uc704\ub85c \uc774\ub3d9<\/li>\n<\/ul>\n<p>\ubc11\uc5d0\ub294 \uc2a4\ud0dd(Backtrace)\uc774 \ud45c\uc2dc\ub418\ub294\ub370, \ud574\ub2f9 \ub77c\uc778\uc73c\ub85c \uc774\ub3d9\ud558\uc5ec Enter\ub97c \uce58\uba74 \uc790\uc138\ud55c \ub0b4\uc6a9\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>M-n<\/strong>, <strong>M-p<\/strong>: \uc704\/\uc544\ub798\ub85c \uc774\ub3d9. \uc0c8\ub85c \uc774\ub3d9\ud55c \uc904\uc758 \uc790\uc138\ud55c \ub0b4\uc6a9\uc774 \ud45c\uc2dc\ub418\uace0 \uadf8\uc804\ubcf4\ub358 \uc904\uc758 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uac10\ucdb0\uc9d1\ub2c8\ub2e4.\n<li><strong>v<\/strong> : \ud574\ub2f9 \uc2a4\ud0dd frame\uc758 \uc18c\uc2a4\ub85c \uc774\ub3d9.\n<li><strong>e<\/strong> : \ud574\ub2f9 \uc2a4\ud0dd frame\uc5d0\uc11c expression\uc744 evaluate\n<li><strong>i<\/strong> : \ud574\ub2f9 \uc2a4\ud0dd frame\uc5d0\uc11c expression\uc744 inspect<\/li>\n<\/ul>\n<p>\ucc38\uace0 \uc790\ub8cc:<br \/>\n<a href=\"http:\/\/common-lisp.net\/project\/slime\/doc\/slime.pdf\">http:\/\/common-lisp.net\/project\/slime\/doc\/slime.pdf<\/a><br \/>\n<a href=\"http:\/\/common-lisp.net\/movies\/slime.mov\">http:\/\/common-lisp.net\/movies\/slime.mov<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\uc740 \uba54\ud0c0(Alt)\ud0a4, C\ub294 Ctrl\ud0a4. Emacs\ub4e0 vi \ub4e0 caps lock\uc740 Ctrl\ub85c \ubc14\uafd4 \uc4f0\ub294\uac8c \ud3b8\ud569\ub2c8\ub2e4. Emacs\uc758 \uae30\ubcf8\uc801\uc778 \uc0ac\uc6a9\ubc95\uc740 \uc54c\uace0 \uc788\ub2e4\uace0 \uac00\uc815\ud558\uace0 \uc124\uba85\ub4e4\uc5b4\uac11\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc708\ub3c4\uc6b0\uc988\uc5d0\uc11c Emacs, CLISP, Slime \uc778\uc2a4\ud1a8 \ubc29\ubc95\uc740 \uc774\uc804 \uae00\uc744 \ucc38\uace0\ud558\uc138\uc694. Emacs\ub97c \uc2dc\uc791\ud558\uace0 &#8220;M-x slime&#8221;\uc73c\ub85c slime\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4. \uc7a0\uae50 \uae30\ub2ec\ub9ac\uba74 REPL (Read-Evaluate-Print Loop)\uac00 \ub739\ub2c8\ub2e4. Slime\uc740 \ud06c\uac8c \ub450\uac00\uc9c0 \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub294\ub370, Common Lisp\ub85c \ub3cc\uc544\uac00\ub294 \uc11c\ubc84 \ubd80\ubd84(Swank)\uacfc, Emacs Lisp\ub85c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[19],"tags":[26,27],"_links":{"self":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts\/50"}],"collection":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=50"}],"version-history":[{"count":0,"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions"}],"wp:attachment":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}