セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

Scala

Playframework の Future の挙動について調べたら Action と Action.async の差異は無かった

表題の通り。調べたら色々興味深いのでメモとして残そうと思う。文章がぶっきらぼうなのは許して。 Playframework では、 Action と Action.async を切り替えることにより、 Future を利用したノンブロッキング処理を Controller 内部にで行うことができる。…

ScalaMatsuri に行ってきました 2019

ScalaMatsuri2019も3日間の行程を終え、大盛況のうちに幕を閉じました。 今年は、カメラマンとしての参加となりました。というか、毎回カメラマンしているのですが、例年はメインで写真撮影をして下さる方がいて、自分は「サブ的に適当に写真を撮る」という…

ScalaのFutureに渡す ExecutionContext の挙動がわかりにくいので図解する

Scalaには、非同期実行をサポートするために Future というクラスがあります。 正確にはJavaにも同名の仕組みがあるのですが、それをちょっと便利にした感じのものです。 Futureの仕組みを簡単に言うと、関数を渡すと別のThreadでその関数を実行してくれるも…

fold沼について

久しぶりに、#rpscalaにて発表をしました。 最近TLなんかでfoldの話しが盛り上がっていたので、foldについて簡単にまとめたスライドです。 fold沼について あまり、深みのある話しは無いのですが、Markdownで書いたのでブログにも転載しておこうと、下記に貼…

輪廻はIOモナドだった。またはIOモナドは輪廻だった

みなさん、輪廻してますか? 「輪廻とはなんなのでしょうか?」という話題にも興味があるのですが、それは今回は置いといて、この話は完全にネタです。^^; まず、輪廻と一口に言っても、仏教だけの用語ではなく、インド方面に広く浸透している考え方なので、…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第7章

この記事は、Scala Advent Calendar 2016の18日目の記事になる予定です。 ふふふ。順調に3日間途切れてる。^^; ということで、4日目の僕が颯爽と記事を透過できればカッコ良かった(?)んですが、順調に何も書いていません。 掲題の通り、久し振りに完全自己満…

記号オペレータのググラビリティの低さよ

愚痴です。 そして、久しぶりにプログラミングに関するネタです。 最近、Reactを使ってみているのですが、下記のようなコードを見かけました。 <Hoge {...this.props} /> この、(...)が、構文なのか例文なんで処理を省略しているのかわからずに悩んだのですが、頼みの綱のGoogle様は</hoge>…

http-client-wrapperをStateモナドに魔改造した

/* 注意!! この記事は、Scalaのプログラミングについて書かれています */ 麗しき、@ponkotuy氏の作ったhttp-client-wrapperを改造して、Stateモナドを利用してみました。 使い勝手は、むしろ悪化した模様。(^^; 元プログラムの解説記事はこちらです。 qiita.…

#ScalaMatsuri 2016 の感想など #scala #saclajp

ScalaMatsuriとは、Scala好きのScala好きによるScala好きのための祭典です。 Scalaとはプログラミング言語です。 そして、ScalaMatsuriは、プログラミング言語のカンファレンスとしては、国内最大級の催し物です。 スタッフと来場者合わせて600名ほどが集ま…

#ScalaMatsuri 2016 でカメラマンしてきました

ScalaMatsuriとは、Scala好きのScala好きによるScala好きのための祭典です。 Scalaとはプログラミング言語です。 そして、ScalaMatsuriは、プログラミング言語のカンファレンスとしては、国内最大級の催し物です。 スタッフと来場者合わせて600名ほどが集ま…

関数型言語で書くと何が嬉しいのか?

Scala Advent Calendar 2015(Qiita版)14日目の記事です。 昨日の記事はこちらです。 d.hatena.ne.jp それでは・・・。 毎年、苦し紛れの記事を上げるのですが、今年は特にネタが思いつかないので、マサカリ覚悟で苦し紛れの妄言を吐きます。 タイトルは、Sca…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第6章

前回: 「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第5章 - セカイノカタチ 関数プログラミング 珠玉のアルゴリズムデザイン作者: Richard bird,山下伸夫出版社/メーカー: オーム社発売日: 2014/11/12メディア: 単行本(ソフ…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第5章

前回: 「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第4章 - セカイノカタチ 関数プログラミング 珠玉のアルゴリズムデザイン作者: Richard bird,山下伸夫出版社/メーカー: オーム社発売日: 2014/11/12メディア: 単行本(ソフ…

foldの融合則についてScala版 #scalajp

先日、foldの融合則についての記事を書きました。 foldの融合則について #haskell - セカイノカタチ こちらHaskellで書いたのですが、Scalaに書き直してみました。 foldrの融合定理 関数プログラミング入門 ―Haskellで学ぶ原理と技法―作者: Richard Bird,山…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第4章

前回: 「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第3章 その2 - セカイノカタチ さて、時間が開いてしまいましたが、第4章行きたいと思います。 関数プログラミング 珠玉のアルゴリズムデザイン作者: Richard bird,山下伸…

オブジェクト指向と関数型で副作用の扱いが違うって知ってた?(2021年版)

(2021/2/23 加筆訂正。文章を見直して現在の結論を追記しました。文意は変わっていません) 最近、オブジェクト指向と関数型を比べる人が多くなってきたみたいなんで、自分の考えをまとめてみます。 まず、本件ですが、壮大なテーマだと思いますので、全体を…

プログラムを純粋に書けって言われたけど、どこまで純粋に書けばいいの?

今、関数型言語の流行により、プログラムを純粋に書くことが求められています*1。 そういわれて、「わかった、副作用のないプログラムを書くぞ!」と勇んで書き始めるとすぐにわかりますが、これがなかなか簡単なものではありません。 純粋な関数を定義する…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第3章 その2

さて、前回の続きです。 「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第3章 その1 - セカイノカタチ この章では、f (x,y) == z を満たす(x,y)を全て挙げる関数の設計について話題にしています。 一つの解き方として、鞍型探…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第3章 その1

前回: 「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第2章 - セカイノカタチ 関数プログラミング 珠玉のアルゴリズムデザイン作者: Richard bird,山下伸夫出版社/メーカー: オーム社発売日: 2014/11/12メディア: 単行本(ソフ…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる 第2章

先日、 Scala Advent Calendar 2014 - Qiita で「関数プログラミング 珠玉のアルゴリズムデザイン」の第1章をScalaで実装してみましたが。味をしめて第2章もやってみたいと思います。 関数プログラミング 珠玉のアルゴリズムデザイン作者: Richard bird,山…

「関数プログラミング 珠玉のアルゴリズムデザイン」をScalaで実装してみる

Scala Advent Calendar 2014 - Qiita14日目の記事です。 昨日の記事は、 @gakuzzzz さんの play2-auth で OpenID とか Twitter OAuth とか OAuth2.0 とか でした。 さて、今日のネタです。。。 関数プログラミング 珠玉のアルゴリズムデザイン作者: Richard …

ソフトウェア開発とは、現実世界の複雑さをプログラムコードの難しさに置き換える作業だ

こんな記事に触発されて。富士通、業務プログラム開発支援ツール「Interdevelop Designer」を販売開始:ITpro Active・・・未だにこんな事やってるのか。正直、驚きと失望と倦怠感と怒りと哀れみと嘲笑がないまぜに押し寄せて、(・_・)こんな顔になりました。S…

モナドが解らない人へ、図解で絶対わかるモナドのしくみ

前置き みなさん、モナドって、わかりにくいですよね。 なので、図解することで解りやすく説明できるんじゃないかと、何回かモナドの図解を試みてきたのですが、むしろ複雑さが強調されてしまい残念な感じになってしまいました。過去の図解 モナドってなんだ…

implicit parameterを用いたFunctor型クラスをOptionで使う

さて、前回まででimplicit parameterを使ってHaskellの型クラス的なものを実装する方法は理解できた。Haskellの型クラスとScalaのimplicit parameterの対応について2しかし、最後にハットリクンのトホホ落ちよろしく、コンパイルエラーが出て解説を終了して…

Haskellの型クラスとScalaのimplicit parameterの対応について2

前回の続き。Haskellの型クラスとScalaのimplicit parameterの対応について 既存の型クラスに新たなインスタンスを追加する 前回の記事で、最終的に僕の中でimplicit parameterがスッキリとした形で記述出来たので大変満足している。| ´ - ω - ` |しかし、Ha…

Haskellの型クラスとScalaのimplicit parameterの対応について

Scalaには、「implicit parameter」という機能があります。これは、メソッドに対して暗黙的にパラメーターを付与するものです。この機能自体の説明は割愛します。暗黙的に知っているものとして以下の記事を書きます。で、この機能、どうやらHaskellの型クラ…

3分でsbtとEclipseに対応したScalaプロジェクトを作る

この記事は、Play or Scala Advent Calendar 2012 11日目の記事です。 「急にScalaのprojectツリーを作らなきゃいけない!」ってこと、よくありますよね? 僕は、そんな時このやりかたで、ささっとprojectを作っています。 この間、ジャック・バウアーに拳銃…

Jetty8のWebsocketをScalaから使う

さて。会社の開発合宿にいってきました。(合宿の様子)それで、僕のテーマは、Websocketにしてみたのですが、色々ハマった上で、おもしろいものができたっぽいので、エントリーしようかと思いました。「websocket scala」でggrとでてくるid:yuroyoroさんの日…

Scalaのfor文を掘ってみる

なんか、よく解らないくなったので書き捨て気味。Scalaのfor文に謎の制限があった気がしたので調査してみた。 for{ x<-List(1) x<-List(x) x<-List(x) x<-List(x) x<-List(x) x<-List(x) x<-List(x) x<-List(x) x<-List(x) x<-List(x) x<-List(x) x<-List(x)…

ScalaでProcessingでOpenGLで楽しむ

このエントリーは#scalaadventcalendarの一日目です。ScalaでProcessingをして、さらにOpenGLも使っちゃうための方法。qtamakiは、Eclipse + Scala IDE + Mavenを使っています。Eclipse 3.7.1 Scala IDE - http://download.scala-ide.org/releases/2.0.0-bet…