ブックマーク / uehaj.hatenablog.com (4)

  • Javaにも不変データ構造に基づいた(Cons セルベースの)リストがあるのだよ - uehaj's blog

    TL;DR JDK(tools.jar)中、com.sunパッケージ配下に、javacが内部的に使っている「com.sun.tools.javac.util.List 」が含まれており、これは不変データ構造としてのリストのように(Cons セルベースのリストのように)利用できる。 はじめに ScalaのコードをGroovyやJavaなどに移植する際に、いつも悲しい思いをするのが不変データ構造に基づいたリスト処理ライブラリが見あたらない、ということでした。JDKの標準コレクションライブラリには、Scalascala.collection.immutable.Listのような、不変データ構造を用いて実装されているリストがありません。 ここで言う不変データ構造に基づいたリストとは、JDKのjava.util.Collections.unmodifiableList()等で取得できるような変更禁

    Javaにも不変データ構造に基づいた(Cons セルベースの)リストがあるのだよ - uehaj's blog
    argius
    argius 2016/04/06
  • 関数型とかの論争について - uehaj's blog

    身と蓋がナッシング まず身も蓋もないことをいうと、結局はCPUの命令セットとして動く言語ですからして、大差はないんですよね。 でもこういうことを言うのは、「どうせ宇宙なんて原子の集合だろ!」という小学生なみです。 なので言わない。でもその認識を捨ててもならない。魔法はないです。地続きではあるのです。 「命令型」か「関数型*1」か さてその上で、問うべき問いが、「命令型」か「関数型」であるならば、関数型に明確な優位性があらわれます。イミュータブルデータ。いい響きですね。map,filter,...いいですね。for禁止、シビれます。いいか、おまえら! forは禁止だ! 了解しました軍曹殿! この利点はあきらかで、かつ入手することが比較的容易です。scalaでもJava8でもreactでも、それなりに努力すればそれなりのものが手に入りそうです。 このレベルではOOPとの対立項はないんじゃないか

    関数型とかの論争について - uehaj's blog
    argius
    argius 2015/04/15
    それが未来だから
  • elmでやってみるシリーズ8: 赤いドットが回っているかのように見えるけど実は直進運動な錯視 - uehaj's blog

    Elmでやってみるシリーズ8: 赤いドットが回っているかのように見えるけど実は直進運動な錯視 少し前に、「このくるくる回る白いドット、実は真っ直ぐ往復してるだけなんだぜ」という記事がありましたが、これをElmで再現してみようというのが今回のネタ。 (追記 id:waman さんが数学解析をされています→回転しているようにみえる白いドットは単振動している - 倭算数理研究所 。このネタ自体もwamanさんのTwitterで知ったんですけどね。) 以下は画面キャプチャ(静止画)。 コードは以下のとおり。 fps_=96 -- 画面更新頻度 pi2 = 2*pi -- 2π deg30 = pi2 / 360 * 30 -- 30°をラジアン単位に変換 -- 1秒間にfps_回、1増加するシグナル値。 ticks : Signal number ticks = foldp (\it acc->a

    elmでやってみるシリーズ8: 赤いドットが回っているかのように見えるけど実は直進運動な錯視 - uehaj's blog
    argius
    argius 2014/07/29
    ずれてる方がなんだか気持ち良い/ elmでやってみるシリーズ8: 赤いドットが回っているかのように見えるけど実は直進運動な錯視 - uehaj's blog
  • プログラミング言語Frege(フレーゲ)を紹介します - uehaj's blog

    これはマイナー言語 Advent Calendar 2013の21日目の記事です。 Frege(フレーゲ*1 )を紹介します。 Fregeは、Java VM上で動作するHaskell風の言語です。以下のような特徴を持っています。 純関数型言語 非正格評価(いわゆる遅延評価) Hindley-Milner型推論に基づく静的型言語 これらの特徴は、Haskellと共通するものであり、構文も基的なところについてはHaskellとだいたい同じか似ているかもしくはサブセットです。標準関数やデータ型やモジュールについても、Haskell 2010からたくさん引っぱってきているそうです。 しかしながら、Fregeはその目標において、Haskellとの完全な互換性を達成しようとはしていません。実際かなり違っています。特にJava VM上で有用であることに重点が置かれており、プリミティブ型はJavaのもの

    argius
    argius 2014/05/22
    JVM版Haskellっぽい言語 / プログラミング言語Frege(フレーゲ)を紹介します - uehaj's blog
  • 1