タグ

2016年12月4日のブックマーク (4件)

  • Coqで証明付きのマージソートを書く - fetburner.core

    この記事はTheorem Prover Advent Calendar 2016の4日目のために書かれました。 少し季節外れの記事になりますが、前期はプロ演A^1の季節でしたね。 僕のTLでもC言語の課題に苦しめられた学部生のツイートが良く回ってきましたが、 とりわけ彼らが苦戦していたのはマージソートを書く課題のようでした。 面白そうなので僕もCoqで実装してみましょう。 もちろん、証明付きで。 実装 とりあえず比較関数等の準備 Require Import Arith Div2 List Orders Sorted Permutation Program. Require Omega. Section MergeSort. Local Coercion is_true : bool >-> Sortclass. Local Hint Constructors Permutation St

    Coqで証明付きのマージソートを書く - fetburner.core
    ruicc
    ruicc 2016/12/04
    証明つけつつパフォーマンス向上させようと
  • The New Haxe Target: HashLink InDepth - Part 1 - Haxe - The Cross-platform Toolkit

    Find out more about HashLink, the newest Haxe target, a virtual machine used to develop system/server/desktop applications. Article by Nicolas Cannasse on 2016-11-22. Comments This is first post of a series of articles covering the new HashLink target for Haxe, read Part 2 HashLink is a new Haxe target that was announced a few weeks ago which I have worked on for the past year and thought about fo

    The New Haxe Target: HashLink InDepth - Part 1 - Haxe - The Cross-platform Toolkit
    ruicc
    ruicc 2016/12/04
  • heterocephalus - Haskellとフロントエンドが仲良くできるテンプレートエンジン - Qiita

    問題提起 近年、フロントエンドElm1 や React.js などで実現することが多くなり、Webサーバに求められる役割は、JSON形式のAPIを提供するだけでよい例も増えてきました。 しかし、規模によってはHTMLにサーバサイドで変数を埋め込んでそのまま表示したい案件も多く存在します。 JSON形式で良ければaesonなどの恩恵にあずかれば良いのですが、Haskellで書かれたWebサーバで、バックエンド側の変数を埋め込んだHTMLレスポンスを返すにはどうしたらよいでしょうか? Yesodの解決策と課題 HaskellのWebフレームワークとして歴史のあるYesodでは、Shakespeareを推奨しています。 Shakespeareは、Haskellっぽいインデントベースの文法を強制されるというデメリットがありますが、Template Haskellによってコンパイル時にテンプレー

    heterocephalus - Haskellとフロントエンドが仲良くできるテンプレートエンジン - Qiita
    ruicc
    ruicc 2016/12/04
    青いウサギが気になる
  • Rewrite Rulesについて軽く - Qiita

    Rewrite Rules(書き換え規則)について軽く説明します。 rewrite rulesはコードを書き換える最適化手法です。コードの書き換えに関してはユーザ自身が指定できるところがポイントです。 モジュラリティとパフォーマンスを両立するために使えたりします。 命令型言語で書き換え規則 javascriptを用いてfor文でArrayの変換を複数回実行することを考えます。 var doSomething1 = function (elem) { return elem + 2; }; var doSomething2 = function (elem) { return elem * elem; }; var initArr = [1,2,3,4,5]; var intermediate = []; for (var i = 0; i < initArr.length; i++) {

    Rewrite Rulesについて軽く - Qiita
    ruicc
    ruicc 2016/12/04