Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

本記事では ClojureScript 製 SPA をモジュール分割するためのパターンを紹介します。 サンプルプロジェクトは下記。 背景 最近 Blockchain に興味があり、Ethereum DApp(分散型アプリケーション)を ClojureScript + re-frame で開発していました。 スマートコントラクト開発の知見は別途まとめたいと思いますが、フロント開発を振り返ると Ethereum エコシステム周りに起因する様々なつらみが存在しました。 使うべきライブラリが多い。 web3.js, ipfs-api, uport-connect... それぞれに初期化パラメータが存在し、環境によって切り分けが必要。 生成したインスタンスに紐づく状態が変化し得る。 インスタンス間の依存関係も存在。 uPort に繋いだら web3 インスタンスを初期化し直さないといけなかったり。
はじめに 追記2020/09/25: Kaoriya版Vimは現在32bit/64bitともにpython2サポートがないためslimvが動作しません、 そのうちきちんと検証をするつもりですが、 Windows環境下でvimでlispやる環境が欲しいだけなら下記のneovim+vlimeのほうがpythonに依存しないので良いと思います この記事はVimmerな人たちでかつCommonLisp始めてみたいという方向けです。 Lisp開発用のVimプラグインであるslimvを使った環境構築をしていきます。 Emacsな人たちはLispBoxで調べると幸せになれるかもしれません。 以前書いたslimv導入という記事の内容の焼き直し版です。 Linuxな人たちだけでなくWindowsな人たちの環境構築についても書いていこうかとおもいます。 ※Windows版書きました : Windowsの環境構
はじめに 本稿では、CommonLispのGNU CLISPとwiringPiライブラリを使用してRaspberryPi電子工作をしたいと思います。 最初は電子工作の基本中の基本である、Lチカから始めます。 wiringPiの準備 自分がインストールしたOS「RASPBIAN JESSIE」のVersion「May 2016」では、最初からwiringPiの共有ライブラリ「libwiringPi.so」が「/usr/lib/」にあったので、わざわざ自分で用意する必要がありませんでした。 最新のRaspbianなら最初から入っているようですね。 CLISPのインストール 以下のコマンドを実行して、GNU CLISPをインストールします。
前回は既に学習済みのパラメータがあるものとして、そこからフォワード計算を行ない予測を出すところを実装しました。今回は、データからパラメータを学習するところの実装について考えてみます。具体的には、「ゼロから作るDeep Learning」の5章にある、計算グラフベースでの誤差逆伝搬法の実装と、それを使った隠れ層二層のニューラルネットの学習と予測について書こうと思います。 一応Githubにレポジトリ作りました(まだあまり整理されていない)。ちなみに処理系はSBCL 1.4.3で動作確認しています。 https://github.com/masatoi/cl-zerodl インストール手順は上記を参照してください。 準備 前回と同様に必要ライブラリを読み込み、作業用パッケージを定義しておきます。 metabang-bindは分配束縛などに対応したletの拡張版のような構文を導入するライブラリで
Common Lispは非常に単純でありながら簡単に拡張可能な構文を持つ高水準言語です。Lispは昔からAIプログラミングに活用されてきましたが、最近では記号処理ベースのAIから機械学習ベースのAIへと世の中の関心が移っており、Pythonなどが主に用いられるようになっています。 とはいえ、Common Lispは機械学習のような科学計算にも向いています(Common Lispが機械学習に向いていると考えるこれだけの理由)。 Common Lispの科学計算に適した特徴としては、例えば以下のようなものが挙げられるでしょう。 最適化されたネイティブコードを吐き出す優秀なコンパイラがOSSにも商用にも存在する 高水準言語でありながら低レベルな世界に降りていって最適化することもできるので、開発効率と実行効率のバランスを取りやすい Cライブラリを簡単に利用できるインターフェースがある この連載では
これはLisp Advent Calendar 2016の7日目の記事です。 どうも。 1日目の記事が好評だったようで嬉しいです。 今回はブログの方に書こうと思ったんですが、カレンダーの記事はQiitaに書くことにしました。 それと12日目はライブラリ紹介になりそうです。お楽しみに。 では本題に入って行きましょう。 OpenID Connectはご存知でしょうか? ざっくり言えば、OAuthの上位互換の認証方式です。 最近の外部認証方式ではこれが一番安全らしいです(あまり詳しく無いので自信はない)。 これを使うと、いちいち会員登録しなくてもWebサービスなどにSNS(Twitterとか)のアカウントでログイン出来るようになります。 メールアドレス以外に個人情報を必要とするサービスの場合はさらに手続きがあったりしますが…。 今回はこれのクライアント側実装をCommon Lispでやってみまし
2018年3月5日, Phil Eaton もし以前にLispについて少し話を聞いたり、学校でSchemeを習ったことがあったとしても、Common Lispは、あなたが想像するものとは全く違います。Schemeは、関数型プログラミングで人気ですが、Common Lispは、理論的に純粋なプログラミング言語というよりも、実世界での利用を強く意識して設計されたプログラミング言語です。さらに、人気がある処理系のSBCLは、高度に最適化されたコンパイラであり、Javaに対抗できるものです。 部品を組み立てる Common Lispのシンボルは、第一級の変数(ラベル)であり、パッケージと呼ばれる名前空間に収められます。しかしパッケージは、ディレクトリを超える範囲は対処しません。ディレクトリを超えてソフトウェアを構成するには、ASDFの「システム」を使います。Common LispのパッケージはPy
この記事は関西Lispユーザ会アドベントカレンダー2017の23日目です。 CommonLispを触っていて、例外処理まわりが面白いと感じました。 CommonLispには"Condition System"という例外処理機構があります。Condition Systemの基本は、Conditionの通知とハンドリングです。 基本 Conditionというのはエラーや警告、何らかの通知を表すものです。実際にはconditionクラスを継承したクラス(CLOSのクラス)のことを指します。conditionクラスのサブクラスとしてerror, warning, simple-conditionクラスなどがあり、通知の重要度や内容によって使い分けます。もちろん、これらを継承して独自のConditionクラスを定義することもできます。 Conditionクラスの定義にはdefine-conditio
この記事は TIS Advent Calendar 2017 16 日目の記事です。 Clojure を仕事で使い始めてから三年が経ちました。未だに学びが多いですが、年数的には中堅 Clojurian と言える域に達してしまったので、自分なりの Clojure 観を整理したいと思い立ちました。自分にとって Clojure の最大の魅力は高速開発です。そしてそれは Clojure 自体の習熟難度と秤にかけても十分魅力的だという話を書きます。 どちらかと言えば Clojure 勉強し始めで、このまま進んでいいか迷っている人向けの内容です。 この記事は2017年時点での内容です。更新版・続編 → キメる Clojure チーム開発 そもそも Clojure とは 時は 2053 年、Skynet が人類を虐げる世界。エージェント Meier は Skynet のログにアクセスすることに成功し、S
この記事はLisp Advent Calendar 2017の二日目の記事です。 はじめに この記事は、Common Lispという初めての人には初めましてな言語の入門記事です。 この世には、Common Lispというとってもカッコいい言語が存在します。その言語はANSIで規格が定められており、宇宙空間で動いたり深海で動いたりし、メタプログラミングが可能で、しかもC言語並に速いという、超クールな言語なのです。 歴史あり、逸話ありのLispであって、実用的と言われるLispです。そんな言語、いますぐに始めてみたいと思いますよね? しかしググってみると、なんだか処理系っていうの (?) がたくさんあったりしてどれを選んでいいのかわからない。rbenv的なものはないの? パッケージマネージャは? アプリケーションのビルドとかどうしたらいいの? ぱっと実用的なプログラムをどう書いたらいいかわから
この記事はLisp Advent Calendar 2016の24日目の記事です。 年末に入りとうとうクリスマスイブですが皆様いかがお過ごしでしょうか。 Common Lispは動的型付けの言語ですが、最適化のための型宣言機構が規格に組み込まれています。 また、SBCLやCMUCLでは、この型宣言を利用し、型エラーをコンパイル時に指摘する機能がついています。 型宣言と最適化の関係については、 最適化 - Common LISP users jp Cより高速なCommon Lispコードを書く Common Lispの最適化に挑戦してみる これらの記事によくまとまっています。 この記事は、実際にどのような記法で型宣言をするのかについて、学習のためにまとめたものになります。 type specifier 型は type specifier (typespec) という方式で記述されます。 ty
Fizz Buzz問題で副作用と代入を抑えてみる【JavaScript、VB.Net、Python3、CommonLisp、Clojure、HSP、R言語、C++、D言語、BAT】PythonC++HSPbatdlang 最近、いかに代入や副作用を減らしてFizz Buzz問題を解くかとか遊んでた。 結論としては3項演算子を使うことは第一の条件として再帰とmapする方法があるのかなと。 今回検証した言語はJavaScript(js)、VB.Net(VB)、Python3、CommonLisp(CL)、Clojure、HSPの6言語(⇒R、C++、Dを追加し9言語)。 HSPは言語仕様的に不利の塊だけどどこまでできるのか知りたかった。 追記: R言語に無名再帰用の構文があると知り追加しました。 また、Pythonについて@shiracamusさんよりコメントに無名再帰の実装例を頂きました。
怖くないテスト駆動開発(CommonLisp+FiveAM編) ASDFについて テストフレームワークとは直接関係ありませんが、 テスト駆動開発する上でASDFについて少しでも知っておくのは 後々便利なので必要なところだけ解説します。 Another System Definition Facilityの略であり、 ライブラリ(ASDFでは「システム」といいます)の読み込みを サポートするツール群です。 CommonLispでは所謂デファクトスタンダードとなっており、 事実、多くの処理系(SBCLやCLISPなど)では標準で組み込まれています。 Lispにおいてもファイルの読み込み順序は当然重要であり ファイルの依存関係を解決するのために使われています。 ASDFは<システム名>.asdというファイルをもとに システムの読み込みを行います。 このファイルには、ファイルの依存関係の他に、 依
はじめに 今まで基本的にJavaをメインに使ってきた自分的には 環境に依存しないVM上で動作する言語がいい できればやはりJavaの各種遺産が使いたい というのがあって、JVM上で動作するスクリプト言語には興味があった。 でも、いろんな言語があるのでどれを使うか迷っていた。 最近は大分リリース等も落ち着いた感じでタイトルにも上げた Scala、Clojure、Groovyあたりがメジャーぽいのかな? ということでこの3つの言語をEclipseで実行できる環境まで作ってみる。 Scala vs Clojure vs Groovy トレンド検索 https://www.google.co.jp/trends/explore#cat=0-5-31&q=%2Fm%2F091hdj%2C%20Clojure%2C%20%2Fm%2F02js86&date=today%2012-m&cmpt=q&tz
Tutorial on Good Lisp Programming Style(これがおすすめだ!) http://norvig.com/luv-slides.ps (Lisp Users and Venders Conference 1993でのPeter Norvig氏の発表) 日本語訳 https://sites.google.com/site/okshirai/home/tutorial-on-good-lisp-programming-style-ja.txt こちらも有用で有名なガイドです。こっちの方がgoogleのものより知られているかも。 一度は目を通しておきましょう。 Google Common Lisp スタイルガイド (これもおすすめだ!) Google Common Lisp スタイルガイド 日本語訳 というかこれとNorvig&Pitman氏のもの位しかないです。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く