タグ

Programmingとfunctional languageに関するtar0_tのブックマーク (12)

  • Mathematicaにおけるプログラムの高速化手法

    December 14, 2009 (Last Modified: October 27, 2022) Mathematicaにおいてプログラムの実行速度を最適化する際の項目を思いつく限り挙げてみた。 関数型パラダイムで書く 必然的に組み込み関数を多く使い、リストをまとめて操作することになるので手続き型で書くより速くなることが多い。 コード量も少なくなって読みやすくなるので、よほどのことでない限りMathematicaでは関数型で書く。 具体的には、手続き型ループ構文(Do, For, Whileなど)をやめて、MapやThreadを使うようにする。 出来る限り組み込みの関数を使い、呼び出し回数を減らす 組み込み関数でできることは出来る限りやらせる。 ドキュメントを探すと、Mathematicaは意外と多くのものが組み込みでできるようになっている。 例えば、整数商を求める場合はFloor[

    Mathematicaにおけるプログラムの高速化手法
  • 計算モデルと論理とゲーデルの不完全性定理 - Gemmaの日記

    ゲーデルの不完全性定理は、数学を扱う数学、つまりメタ数学を考えるが、それだと理解が難しい。しかし、証明(数学)=プログラムという悟りを開くと、プログラムを扱うプログラム、つまりメタプログラムを考えればよくなり、それならコンパイラ等でなじみがあるので理解が優しくなる。 話の流れは以下。 1. プログラムとは何か 2. 証明とは何か 3. 証明=プログラム , (   {、 {   ヽ.ー、、 \、__ぃ._ゝ⌒ヾ iヾ)}、_ ン_ー-_二ー-, 〉 {厶 _、ヽ              _ ヽ._>'´ / /,ィ/ / ハYヘい       ,. -- 〃⌒ r−-、      ィ´  〃 ,イ/7'  ,イイ/ 小ヽ 丶、 ,. ‐ '´ハ i   ″`ヽ、 、ヽ、     /幺ィ  {从{小込v' jゥ仏厶川リ}  YV,   小 Vj. |丶   ヽ ` ー-ミー--'_,辷三彡

    計算モデルと論理とゲーデルの不完全性定理 - Gemmaの日記
  • Rubyのある風景 - Stream

    ある量xの時間変化を表すのに、普通はxという変数への代入を用いています。 というよりも代入という操作を認めたがために時間の変化を考えなくてはならなくなったと言っても良いかもしれません。 このような改まった言い方は変に聞こえるかもしれませんが、代入という操作は「副作用」とも表現されるように、色々と困った問題を引き起こすことも確かです。 例えば参照透明性(ある関数を引数を固定して呼ぶと、いつ何時も同じ値を返すという性質)を放棄せざるを得なくなるということ。 この結果、並列に動くプロセスを扱うことが非常に困難になってしまいます。 マルチスレッドなプログラムを作ったことがある人なら、このことについては大いに納得できることだと思います。 そこで発想を変えて、ある量xの変化はx(t)という一つの固定された時間の関数であり、時間tが流れることによってxが変化していくのだという風に考えてみてはどうでしょう

  • [O] これから15分でErlangを始めるための資料

    Erlangをいうプログラミング言語を使って何かをすることが、 最近の流行みたいです。去年はHaskellが流行しましたね。 研究室内で僕を含めてErlangに興味津々という人が、 何人かいたので、今やろう!すぐやろう!と始めてみました。 以下はDebian Etch LinuxでErlangを使ったHello Worldに たどり着くまでの方法と、自習用の資料へのリンクです。 15分でHello Worldを表示してみましょう。 # 僕は表示までに30分以上かかりましたが・・・。 ErlangでHello World Erlangの読み方 - アーラン - Erlangとは Erlangをインストール Debian Etchではapt-getするだけです。時間は5分くらいかかります。 Windowsの人は、Erlang.orgでバイナリファイルを配布しているので、 それをインストールして

  • Programming in Haskell

    Programming in Haskell ページへようこそ このサイトについて このサイトは、Haskell でプログラミングを楽しむためのサイトです。 現在のところ、WiLiKi というWiKiシステムで運用されています。WiLiKiの使い方は、 WiLiKi:WiLiKi:リファレンスマニュアルを参照してください。 メイリングリスト 「Haskellプログラミングを楽しむための」メーリングリストがあります. MailingListのページをご覧ください. チャット 「Haskellプログラミングを楽しむための」チャット・ルームがいくつか存在します. ChatRoomのページをご覧ください. サイトマップ Introduction Haskell とは Definition 仕様と標準ライブラリ Tutorial チュートリアル やさしいHaskell入門 モナドのすべて なぜ関数プ

  • コンパイラの作り方 (詳解)

  • Karetta|Gaucheプログラミング(立読み版)

    はじめに書の構成 (1)書の対象読者書の表記書の使い方執筆時点でのGaucheバージョン謝辞第1部: 思想LispとScheme (4)Gaucheの特徴 (1)すべて式であるすべてリストである (1)lambdaは空気のような存在である (2)プログラミングとは名前付け(bind)であるすべて再帰である (2) (2)Schemeのすごい点 (4)すべてオブジェクトである (もしそれがお望みなら)Gaucheの設計思想や誕生の背景Schemeの評価モデルとは? (3)「Lisp脳」の謎に迫る - Schemeプログラマの発想第2部: 実用Schemeスクリプトを書こうSchemeスクリプトを書く (1)コマンドライン引数の値を得るユニットテストを書く (1)CGIを書こうSchemeスクリプトをCGIとして実行するwww.cgiライブラリを利用する (1)手軽にHTMLを生成する

  • The MinCaml Compiler

    Document generation engine that can be used to generate PDF and Word documents from custom software applications With Docmosis you can quickly and easily add document generation and reporting to your software application. Documents are generated from templates which can be created using Microsoft Word or LibreOffice. These templates utilize simple placeholder fields to handle text, repeating and c

  • COSAK

    初めての方は、仕様やサンプルソースをお読みください。 更新履歴 [2007/04/14] 完成 [2007/07/13] 公開 [2011/06/19] Iコンビネータおよび、Iコンビネータを生成する^^を追加 概要 COSAK(Constructed from Only S And K)はその名の通り、"S"と"K"だけから構成される関数型(?)言語です。 構文として、sとkと、それらを使った関数適用しか用意していません。関数抽象なんてどうでもいいです。 もちろん変数なんてありません。これで変数のスコープがどうとかいうことで悩む必要はなくなりましたね。 こう書くと、何も出来なさそうですが、実は、高階関数(のようなもの)を使えるなど、その表現力は意外と高いです。 実用的かどうかは、サンプルソースを見て実際に試してみて考えてください。すぐに分かります(笑) 入力: 出力: 仕様 構文: fo

  • Life with Cygwin

    沖ソフトウェア株式会社は、沖通信システム株式会社および株式会社沖インフォテックと平成22年10月1日をもって合併いたしました。新会社名は、株式会社OKIソフトウェアとなります。3社が行っております事業は新会社にて従来通り継続いたします。

  • Collection & Copy - JavaScriptにおける高階プログラミング

    翻訳 原文:Higher Order Programming In Javascript著者:Sjoerd Visscherライセンス:クリエイティブ・コモンズ・ライセンス(帰属) 前提知識JavaScriptを使ったオブジェクト指向プログラミングの知識が必要となります。以下のWebreferenceの記事を読み、よく理解しておいてください。OOP in Javascript, part IOOP in Javascript, part IIDouglas Crockford最終更新2004/3/28はじめに高階プログラミングでは、値として関数を使うことができます。つまり引数として関数を別の関数へ渡すことも、関数を別の関数の返り値にすることもできるのです。この形式のプログラミングは、しばしば関数型プログラミングで使用されますが、「通常」のオブジェクト指向のプログラミングでも非常に有用です。

  • 紫藤のページ

    紫藤のページにようこそ! Lisp, Haskell, Python, Sather などの関数型言語の解説、小品プログラムを載せています。 ここでは関数型プログラミング言語をものすごく広い意味で使っており、 手続きをデータとして扱える言語を指します。 (Python, Sather などは普通はオブジェクト指向言語に分類されます。) また、xyzzy のマクロに関するメモもあります。 面白そうな割りに、web 上に文書が少ない題材を取り上げています。 リンクはご自由にお張りください。 更新ログ [Sep 15, 2014](Python) Set を用いたライフゲームの実装 を作成 [Jul 21, 2014]デコレータを用いた bottle.py のアクセスコントロール を作成 [Jul 13, 2014]Maildir のバックアップ を作成 [Jun 28, 2014]自宅サーバの

  • 1