Sphereとともに

scalaとかplayframeworkとか。技術ブログにしたいなと。環境は Windows7x64, mac です。たまに声優さん情報が混ざります。最近ちょっとClojure触りました。

Clojure

Clojure その27 Webアプリケーション その3(TODOアプリケーション作成)

今回はTODOリストを溜め込む処理と溜め込んだリストを表示する処理を作成しました。(絶対もっとスマートな書き方あるだろ・・・とか思いながら)うーん (defn display-todolist [] (map #(str "No: " (:no %) " " "Item: " (:todo %) "</br>")(deref todolist)))…

Clojure その26 Webアプリケーション その2(TODOアプリケーション作成)

なんか他のフレームワークでもよくあげられるサンプルとしてTODOアプリケーションがあるのでそれを試してみます。 lein new compojure hello-todoまずは project.clj を弄って hiccup を使えるようにします。 (defproject hello-todo "0.1.0-SNAPSHOT" :desc…

Clojure その25 Webアプリケーションその1

・・・CSVとかもういいわ(諦めClojureでWebアプリケーションつくるにはhttp://qiita.com/snufkon/items/5224ecc090a8fddd45cdを見ると、CompojureとHiccup使えばなんとかなりそうなので手を出してみるプロジェクトの作成は lein new compojure [プロジェク…

静的型付け言語と動的型付け言語

一般的にどちらが良いかを論じるつもりはないのでそういった話を見たい人はもっと別の技術力のある方たちの議論を見たほうがよいでしょう。あくまで、自分の感じたところをつらつらと書きます。

Clojure その24 csvファイルを読み込んでpart2

全然うまく行かないのでrepl でちょっとみてみるふむじゃpart1のやつをちょっと弄ってみて (defn -main [] (def uploadData (parse-csv (slurp "test.csv"))) (def defaultData (parse-csv (slurp "default.csv"))) (println (class uploadData)) (println (…

Clojure その23 csvファイルを読み込んでpart1

default.csv, test.csvという2つのCSVファイルがあったとして・・・■ default.csv aaa,bbb■ test.csv 000,111という中身だったとする。んで 000 : aaa 111 : bbbと出力したいと考えたCSVファイルの読み込みにはhttps://github.com/davidsantiago/clojure-cs…

Clojure その22 お遊び

行くよっって自分がつぶやいたらyoutube で Q&Aリサイタル を再生するという意味の分からないやーつ (ns hello.core (:import [twitter4j TwitterFactory Query TwitterException]) (:use [clojure.java.browse]) ) ;; Twitter からつぶやきを取得 ;; -> laz…

Clojure その21 # について

正月2日めからなんでClojureの勉強してるんだろう・・・ 今回はたびたび出てくる#について#は無名関数のリーダーマクロだ(※マクロとリーダーマクロは全く違うらしい。まだそこまで読み込めていない。。。)Clojureにおける無名関数は fn で作れるが# を使…

Clojure その20 ->>(スレッディングマクロ)

Clojure その19 twitter4j を使ってみる3 - Sphereとともににコメント頂きましたので、早速動きを見てみましょうOh...エラー出てる・・・こいつは困った・・・ちょろっと書き加えてみる (ns hello.core (:import [twitter4j TwitterFactory Query Twitter…

Clojure その19 twitter4j を使ってみる3

むむむ・・・ (ns hello.core (:import [twitter4j TwitterFactory Query TwitterException])) (defn -main [] (try (let [twitter (.getInstance (TwitterFactory.))] (let [userTimeline (.getUserTimeline twitter)] (println (map #(.getText %) userTim…

Clojure その18 twitter4j を使ってみる2

とりあえず1件表示することはできたので、 (ns hello.core (:import [twitter4j TwitterFactory Query TwitterException])) (defn -main [] (try (let [twitter (.getInstance (TwitterFactory.))] (let [userTimeline (.getUserTimeline twitter)] (printl…

Clojure その17 twitter4j を使ってみる

(※Clojureの理解が不十分なまま書いています)準備として■ project.cljtwitter4j の依存関係を記述 (defproject hello "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse Public Licens…

Clojure その16 try-catch は式か

ちょっと気になったので (ns hello.core) (defn -main [x y] (let [z (try (/ (Integer. x) (Integer. y)) (catch ArithmeticException e (.getMessage e))) ](println z)) ) 実行 $ lein run 1 2 1/2 $ lein run 2 0 Divide by zeroはい式でした堀江由衣を…

Clojure その15

今回は try-catch ですとりあえずなんらかのExceptionを吐き出してくれる処理を用意します (ns hello.core) (defn -main [x y] (println x "/" y "=" (/ (Integer. x) (Integer. y)))) エラーを起こす方法は簡単ゼロで割ってやれば良いです $ lein run 2 0 E…

Clojure その14

Clojure その13 テキストファイル読み込み3 - Sphereとともににコメント頂きました(@kawasima 先生ありがとうございます)詳しく見て行きましょう 単に中身を全部読み込むだけなら (slurp "/xxxxxxx/hello/src/hello/core.clj")行ごとに処理するなら、こう…

Clojure その13 テキストファイル読み込み3

これでテキストファイルの中身をすべて読み込むことが出来ました (ns hello.core) (import '(java.io File FileReader BufferedReader)) (defn -main [] (let [reader (new BufferedReader (new FileReader (new File "/xxxxxxx/hello/src/hello/core.clj"))…

Clojure その12 テキストファイル読み込み2

絶対パスにしたらいけた (ns hello.core) (import '(java.io File FileReader BufferedReader)) (defn -main [] (let [fi (new File "")] (println (.getAbsolutePath fi))) (let [reader (BufferedReader. (FileReader. (File. "/xxxx/hello/core.clj")))] …

Clojure その11 テキストファイル読み込み

テキストファイルの読み込みを行いたい・・・行いたいが・・・そんなファイルねーよって怒られる (ns hello.core) (import '(java.io File FileReader BufferedReader)) (defn -main [] (let [fi (new File "")] (println (.getAbsolutePath fi))) (let [rea…

【追加】Clojure その9 case

Clojure その9 case - Sphereとともににコメント頂きました、がよくわからなかったので、直接聞きました@FScoward (case 評価対象値 値1 式1 ... 値N 式N) となっている値i 式i が偶数個で対になっている場合は「デフォルトなし」でマッチしない場合はエラ…

Clojure その10 cond

前回は case を使いましたが他にも cond というものがあるそうなcaseとcondの違い - すにぺっと (defn -main [member] (cond (= member "高垣彩陽") (println "スフィア") (= member "豊崎愛生") (println "スフィア") (= member "戸松遥") (println "スフィ…

Clojure その9 case

今回はcase を使ってみましょうClojureDocs - clojure.core/case (defn -main [member] (case member "高垣彩陽" (println "ピンク") "豊崎愛生" (println "緑") "戸松遥" (println "オレンジ") "寿美菜子" (println "紫"))) $ lein run 高垣彩陽 ピンクここ…

SIerにおける関数型言語(Scala、Clojure)

SIerは生産性を高めるための次の言語を探っている(ようだ)話題に上がるのはやはり関数型言語関数型言語にすれば生産性があがるそうだ大抵そういう話をする人間は、SE全員が関数型言語を使えることを前提で考えているでも、SIerに勤めている人間で関数型言…

Clojure その8 for

if やったら for かなとりあえず 1〜9 を表示するものを書いてみましょうちなみにScalaだとこんな感じ object Main{ def main(args: Array[String]) = { for(i <- 1 to 10){ print(i) } } } 勘でClojureを記述してみる (defn -main [] (for [i (range 1 10…

Clojure その7 if

続いて条件分岐Scala では if は値を返す式です。Clojureではどうでしょう確認に入る前に変数の定義の仕方を知っておきたいですねググった結果def, letというのを見つけました簡単に言うと def は グローバル変数を定義let はローカル変数を定義する際に利用…

Clojure その6

今回は関数を定義してみます引数に x と y をとって足し算した値を画面に表示するという関数を作ってみましょう関数定義には defn を使えば良さそうだというのは前回学びましたlein new した時に作られたものを見た限り引数を取るには [] を使用すれば良さそ…

Clojure その5

ところで、当たり前のように書いている (ns hello.core) この一文一体なんなのかclojure ns でググれば一発ですがnamespace ですね。なんか、以下のページ見ると色々書いてありますが・・・ http://d.hatena.ne.jp/propella/20100701/p1Clojure のネームスペ…

Clojure その4

さて、その3では引数を渡さなきゃ動かないものでしたが引数渡さんでも動くようにしたい・・・!ということで、ちょっと弄ってみましょう (ns hello.core) (defn -main (println "Hello, World!")) はい、残念 $ lein run Exception in thread "main" java.l…

Clojure その3

はい正解はこちらでした (ns hello.core) (defn -main "I don't do a whole lot." [x] (println x "Hello, World!")) main じゃなくて -main なのねんで、実行時に引数渡さなきゃだめなのね $ lein run fscoward fscoward Hello, World!おいしいClojure入門 …

Clojure その2

今回は実際に触るところまで環境は mac です。調べた限り leiningen(・・・レインいんげん?)というものを利用すると良いらしいとのことなので brew install leningenと打ってインストール lein new helloと打つと以下の様な感じでプロジェクトが作成され…

【Scalaか】Clojure【Scala以外か】

数ヶ月前から、弊社の凄い人が僕のいる部署に異動して来た (最近やっと関わりを持てた)その人がClojureを推していたので、ちょっと学んでみようと思う(ももいろクロージャーとか上手いこと言われて悔しかったのは内緒w)ディスるにせよ、ディスらないに…