タグ

lispに関するmas-higaのブックマーク (54)

  • Lispの現代における意義 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? reddit/lisp 英語圏のreddit/lispで投稿しましたら、思いのほか反響がありました。日訳をここに投稿します。 よくある質問 reddit/lispを見ていると、頻繁に同じ質問が繰り返し出てくるのを目にします。 「Lispは優れているにもかかわらず、なぜもっと広く使われないのでしょうか?」 私は、その答えはLispの質そのものにあると考えています。私の意見では、Lispは知的なおもちゃです。ここでは、この問題に関する私の考えを共有したいと思います。 個人的なチューリングマシンへの欲求 1958年、マッカーシー博士はLi

    Lispの現代における意義 - Qiita
    mas-higa
    mas-higa 2024/08/22
    ダイナミックスコープが面白いんだよね。(Perl にもあるけど)
  • 新しいプログラミング言語を学ぶとき、簡単なLisp処理系を作るという話

    私は新たにプログラミング言語を学ぶとき、しばしば簡単なLisp処理系を作ってみます。いくつかの言語で取り組んでいるうちに、このLisp処理系群に小さな共通基盤も出来上がったりしているので、これを紹介しつつ、Lisp処理系の実装がプログラミング言語の学習にどう丁度いいのかを紹介します。 Rosetta Lisp 自作のLisp処理系群を、ロゼッタ・ストーンから名を借りてRosetta Lispと呼んでいます。Rosetta Lispは以下のような特徴を持ちます。 一定の共通した言語仕様・VMの仕様に基づいて動作する Rosetta Lispは (Rosetta Lispに準拠するLisp処理系群は)、いずれも共通した命令セットのVM上でLispプログラムを実行するように実装されています。 Lispの簡単な実装では、よくインタプリタ形式が採用されます。kanaka/malやrui314/min

    新しいプログラミング言語を学ぶとき、簡単なLisp処理系を作るという話
  • 変数をリストにまとめる - Qiita

    (defun sut (arg) "テスト対象" (let ((a 1) (b 10) (c 100)) (message "sut: %s" (list a b c arg))) t)

    変数をリストにまとめる - Qiita
    mas-higa
    mas-higa 2022/11/14
    "連想リストしか勝たん"
  • Emacsと暦 - Qiita

    はじめに 記事は、Emacs のカレンダー機能・天文計算ツールの簡単な紹介、Emacsでサポートされている世界の暦、またフレームワークを使った、和暦の実装を試みと、その際に気づいた注意点を紹介します。また「またアジア各国の旧暦に関する雑学」についても触れています。 世界の暦 世界には様々な暦が存在します。 人類が月の満ち欠けを意識し、農耕・牧畜、そして宗教祭礼を始めた頃から、一年のうち、どの時期に何をするかを記録することは、社会生活を営む上で重要となり、そこから暦の概念は始まったと考えられます。 その中でもグレゴリオ暦は、世界的に共通の暦として使われ、日でも多くの年中行事の基準となっています。 しかし、欧米を除いて単一の暦を使っている国はあまり多くはなく、ほとんどの国が、ローカルな暦とグレゴリオ暦を併用しています。グレゴリオ暦のみを使っている日は、欧米以外では数少ない例外です。 た

    Emacsと暦 - Qiita
    mas-higa
    mas-higa 2020/12/28
    (require '何を?)
  • Emacs Lisp で実装する、9つのフィボナッチ関数 - Qiita

    概要 基的に Emacs Lisp (または、Lisp 自体)をあまり知らない方向けです。 Emacs Lisp でどんなコードが書けるのかを知って、興味を持ってもらえればと書きました。 さて、Lisp はマクロで構文を拡張出来る事が特徴ですが、もちろん Emacs Lisp も例外ではなく、フィボナッチ関数を色々な書き方で実装する事が出来ます。 今回は、それ以外にも、ジェネレータ版、遅延評価版、果てはスタックマシーンのコードを直接記述する方法まで、取り揃えました。 (それぞれの関数は、簡単の為、引数に負の値が指定されない事を前提にしています。) 内訳は以下の通りです。 再帰呼び出し系 fib-tail-recursion fib-double-recursion ループ系 (マクロを展開すると結局は同じ様なコードになるけど、色々な書き方が出来る) fib-while fib-dotim

    Emacs Lisp で実装する、9つのフィボナッチ関数 - Qiita
  • Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita

    ところでこのリスト内包表記、チューリング完全だって知ってましたか? こちらの記事でそのことが示されています。 リスト内包表記の活用と悪用 by @KTakahiro1729 あああっ! 開かれるPythonワンライナー&難読化の世界!! ステキすぎる!!! 超カッコいい!!!! ……でも、われわれはbrainfxxkだけで満足していてよいのでしょうか。ぼくは、もっと抽象的で、カッコよくて、とっても使いやすい枠組みがあれば、もっといろんなことができて楽しいと思うんです。 たとえば、LISPとか。 ほかには、LISPとか。 そういうことをニヤニヤと妄想してたら、リスト内包表記によるLISP実装が生えてきました。なにこれ! できたもの このようなものができました! 各ソースファイルは以下のようなポジションになっています: lisc.py: 全部を一つのリスト内包表記で書いたもの lisc_par

    Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita
    mas-higa
    mas-higa 2018/03/28
    [これはひどいw]
  • Lispのアイデア | POSTD

    Lispと聞くと、冷蔵庫のような大きいサイズのコンピュータや、大文字のアルファベット文字列や括弧の並びといったような過去の時代のことが頭に浮かびます。そう、非常に多くの括弧。何故、オブジェクト指向プログラミングの作成者たちは、そんなにもLispの アイデア に魅了されるのでしょうか。そしてまた、アイデアとされるプログラミング言語というものは、どうやったら説明できるでしょうか。こうしたことを教えてくれなかったコンピュータ科学の教育を責めるべきでしょうか。 Lispは、John McCarthyが書いた Recursive Functions of Symbolic Expressions and Their Interpretation by Machines, Part I という論文によって、初めて世界に登場しました。その中で、McCarthyはプログラミングに新しい多くのアイデアを導入

    Lispのアイデア | POSTD
    mas-higa
    mas-higa 2017/02/13
    "Lispと聞くと…過去の時代のことが頭に浮かびます" 最近の人はそういうの知らんだろ。
  • レトロ Lisp - Qiita Advent Calendar 2016 - Qiita

    SunSundayMonMondayTueTuesdayWedWednesdayThuThursdayFriFridaySatSaturday

    レトロ Lisp - Qiita Advent Calendar 2016 - Qiita
    mas-higa
    mas-higa 2016/12/06
    全部一人で書くの? 何年か前に破綻したの見たけど .../id:g000001 大変失礼しました。ご指摘の通り適当なコメントでした。お怒りご尤もです。前言は撤回します。申し訳ありません。
  • Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 - 八発白中

    Roswell」というプロダクトがある。 clfreaksのPodcastで聴いたことがあるかもしれないし、数週間前にLisp Meet Upで佐野さん (@snmsts) の発表を聞いたかもしれない。 https://github.com/snmsts/roswell Lisp Meet Up 発表録画 知名度の割には意外と長く開発が続いているプロダクトだ。プロジェクトの最初のコミットが2014年7月30日なので、もう11ヶ月ほど開発が継続していることになる。開発は未だ活発で、バグ報告をするとその日のうちに修正がmasterに入ることが多い。 僕が働いてるサムライト株式会社では、個人の開発マシンではもちろん、アプリケーションサーバでも日常的に使われている。 RoswellにはChefのrecipeも既にある。 先日RoswellはTravis CIとCircle CI用のインストーラス

    Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介 - 八発白中
    mas-higa
    mas-higa 2015/06/12
    リアルワールドに出てきてはいけないものが出てきた感
  • Emacs、Guile、Emacs Lispの未来 | POSTD

    GNU Emacs は、フリーソフトの世界で最も長く、継続的に開発されてきたアプリケーションの1つです。考え方によっては、30年以上を経て、これを複数世代のプロジェクトと見なすことができます。しかし、これだけ長寿であると課題もあります。Emacsコミュニティの多くの人たちは、そろそろエディタ内部のLispインタプリタを、より高速で最新のものにリプレースする時だと結論付けてきましたが、Emacsの大半が動作している基礎となる仮想マシンを入れ替えると、Lispによる Emacs特有の性質 に与える影響を含め、大規模な影響が出ます。 この話題は以前にも上がりましたが、最近では9月11日にChris WebberがEmacs開発リストに、Robin Templetonの Guile-Emacs への作業状況に関して質問を しています 。その名前から分かるように、Guile-Emacsは内部のEma

    Emacs、Guile、Emacs Lispの未来 | POSTD
    mas-higa
    mas-higa 2015/01/09
    これはヘタすると Emacs が滅びる
  • ace-isearch.el : 超isearch=isearch+ace-jump-mode+helm-swoop カーソル移動と検索を統合!

    ace-isearch 20170506.12(in MELPA) A seamless bridge between isearch, ace-jump-mode, avy, helm-swoop and swiper ace-isearch は、isearch(インクリメンタルサーチ)を 超強化するEmacs Lispです。 isearchのクエリ文字数によって、以下の挙動を行います。 1文字→ace-jump-mode 2〜5文字→isearch 6文字以上→helm-swoop 0.4秒アイドルになると自動でace-jump-mode, helm-swoopへ移行します。 ace-jump-mode とは、画面に表示されている文字をタイプすることで、 3ストロークでカーソルを移動するコマンドです。 画面内の移動に特化しています。 helm-swoop とは、M-x helm-occ

    ace-isearch.el : 超isearch=isearch+ace-jump-mode+helm-swoop カーソル移動と検索を統合!
    mas-higa
    mas-higa 2014/10/09
    migemo ><
  • 【デバッグの友】現在位置のEmacs Lisp関数をトレースする超簡単な方法!

    【デバッグの友】現在位置のEmacs Lisp関数をトレースする超簡単な方法!
  • bind-key.el : define-keyを直接書くのは時代遅れ!Emacsの重鎮が行っているスタイリッシュキー割り当て管理術!

    bind-key.el : define-keyを直接書くのは時代遅れ!Emacsの重鎮が行っているスタイリッシュキー割り当て管理術!
  • use-package.el : Emacsの世界的権威が行っている最先端ラクラクinit.el整理術

    use-package 20170710.1234(in MELPA) A use-package declaration for simplifying your .emacs use-package マクロは、emacsのパッケージ設定を 劇的に簡潔にして読みやすくするマクロです。 <2014-12-12 Fri>更新: @kai2nenobuさんも詳しい記事をお書きになりました。 以下の定番の記述がすごいすっきり書けるようになります。 load-path キー割り当て autoload auto-mode-alist interpreter-mode-alist パッケージ読み込み前に行う処理 パッケージ読み込み後に行う処理 Emacsがアイドル状態に行う処理 一時的な設定の無効化 特にキー割り当てに関しては bind-key.el により とてもすっきり記述できます。 作者はEma

    use-package.el : Emacsの世界的権威が行っている最先端ラクラクinit.el整理術
    mas-higa
    mas-higa 2014/09/10
    これはよさげ
  • migemo.el : ローマ字で日本語検索する神ツールMigemoが更新されたよ!

    migemo 20160924.741(in MELPA) Japanese incremental search through dynamic pattern expansion 日人でEmacsを使っていてMigemoを使っていないならば、 今すぐインストール してください。 そう、今すぐです。 Emacsのisearchは少ないタイプ数で目的地に到達してくれる 優れたカーソル移動手段です。 しかし日語文字列の場合は、 ローマ字から変換をする必要があるため、 isearchの恩恵が受けられません。 Migemoは漢字変換の手間を排除し、 ローマ字を入力するだけで 日語文字列を検索してくれます。 たとえば、C-s nihonで「日」にカーソルが行きます。 Migemoを使うには、cmigemoというバックエンドをインストールする必要があります。 Debian系列ならば $ su

    migemo.el : ローマ字で日本語検索する神ツールMigemoが更新されたよ!
  • system-specific-settings.el : OS(プラットホーム)やホスト名ごとの処理を記述するマクロ群

    system-specific-settings 20140818.757(in MELPA) Apply settings only on certain systems Emacs Lispプログラミングをしたり、複数のマシンで共通する設定を書くときには ホスト名やOSごとの処理を記述する必要が出てきます。 そこで、system-specific-settings.elで提供されているマクロを使うと便利です。 when-system-name-match when-system-type-match if-system-name-match if-system-type-match これらのマクロはautoloadされるので、MELPA経由でインストールすれば requireを書かなくても使えます。 使い方は通常のwhenやifと同じですが、条件の書き方が異なります。 完全一致 '(n

    system-specific-settings.el : OS(プラットホーム)やホスト名ごとの処理を記述するマクロ群
  • ace-jump-buffer.el : ace-jump-bufferでワンタッチバッファ切り替え

    ace-jump-buffer.el : ace-jump-bufferでワンタッチバッファ切り替え
  • Re: “Emacs Lisp テクニックバイブル” るびきち著

    を入れるだけです。 これでletがレキシカルスコープになって動作も速くなって幸せになれます。 (require 'cl)問題 にも決着が見えてきました。 cl.el 自体がdeprecatedになっていて、今は cl-lib.el を使うようになっています。 cl.elがcl-lib.elを呼ぶようになっていて、Common Lispマクロ・関数には「cl-」というプレフィクスがつきます。 loop→cl-loop destructure-bind→cl-destructuring-bind remove-if-not→cl-remove-if-not よって、(require 'cl-lib)してしまえばCommon Lisp関数も 合法的に 使えます! おまけに、Emacsにも 念願のパッケージシステム が登場したおかげで、外部パッケージをどんどん投入できるようになりました。 使うと役

    Re: “Emacs Lisp テクニックバイブル” るびきち著
    mas-higa
    mas-higa 2014/08/04
    脱法Common Lisp
  • Emacsのモダンなライブラリ4+1選 (2013年版) - Qiita

    このライブラリ群はEmacsに不足している名前がわかりやすい関数、他の言語では提供されているデータ構造を操作する便利な関数を提供してくれます。このライブラリを使うと、プラグインや、スクリプトを作るのがすごく楽になります。 +1の部分であるCaskは、ライブラリというよりプラグインなので別にしてます。 それぞれどんなライブラリか、かいつまんで紹介します。 #dash.el dash.elは、Emacsのリスト操作APIを提供するライブラリです。このライブラリは、かなりEmacsのリスト操作を分かりやすく、補完してくれるライブラリになっています。 リスト操作に関連してか、 Clojureのスレッディングマクロ On Lispで紹介されているアナフォリックマクロ バインドという機能 木構造の操作のAPI など様々なものを提供しています。 メリットとしては、 もっと関数型言語っぽく書ける リスト操

    Emacsのモダンなライブラリ4+1選 (2013年版) - Qiita
  • なぜRubyは許容可能なLISPなのか - masatoi’s blog

    LISPの真実を読んでたら最後に出てきたので、かなり古い記事だけれども、Eric Kidd氏のWhy Ruby is an acceptable LISPを訳してみました。まつもとさんによる反応もあり、そのエントリの中で原文はほぼ要約されています。 一年前、私はRubyに注目してはいたものの、それを無視することにした。RubyPythonほどポピュラーではないし、LISPほど強力というわけでもない。なのに何故気にかけなければならないというのか。 もちろん、これらの評価基準は考えなおすこともできる。もしRubyがLISPよりもポピュラーで、Pythonよりも強力だったらどうなるだろうか?*1 それはRubyを興味深いものにするに足るのではないか? この疑問に答える前に、LISPを強力たらしめているものは何なのかを定義しておくべきだろう。Paul GrahamはLISPの美徳について雄弁に語

    なぜRubyは許容可能なLISPなのか - masatoi’s blog
    mas-higa
    mas-higa 2013/03/26
    許容する者が想像したのと逆だったw