※これはHaskell Advent Calendar 2012の12/12分の記事です。 こんにちわ、Perlのプログラマの@hirataraです。関数型言語はまともに使ったことがないので、命令型言語の話を書きます。 Haskellでのふつうの"関数" Haskellは純粋関数型言語なので、例えば、add1 :: Int -> Intのような型の関数で副作用を発生することはできません。ここでいう副作用とは、ログを出力したりネットワークにアクセスしたりといったoutputだけではなく、ファイルを読み込んだり環境変数を参照するといったinputも含みます。add1は数学の関数と同じように振る舞います。もっときつい言い方をすれば、add1は単なる辞書(Dictionary or Map or HashTable, etc.)のように、キーに対して決まった値を返すような働きしかしません。(ただし
2019/04/08 · But I can't figure out what does Use -v to see a list of the files searched for. mean. I Google a lot and I have tried using :l P36 -v ...
Pythonをよく使う人にはよく知ってる人も多いのですが、docoptという便利ライブラリがあります。 docoptはargparseやoptparseのようなコマンドライン引数をパースするライブラリなのですが、その発想がコロンブスの卵なのです。 例えばPython標準のargparseだと、argparseのAPIを組み合わせてパーサを組み立てるわけです。するとパーサと一緒にヘルプも作ってくれて、"program --help"などとすると自動生成されたヘルプを表示してくれるようになります。 しかし、そのAPIを覚えるのが大変で、毎回ドキュメントを読まないと忘れちゃうわけです。 import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument
Juliaのマニュアルを読むとコンストラクターの記述はちゃんとあるのですが、デストラクターに関しての記述が見当たりません。ググっても情報が出てこないようなので、ここにその方法を残しておきます。 JuliaにはC++の~ClassName()のようにデストラクター専用の関数はありませんが、コンストラクターの中でオブジェクトがGCされたときの処理を記述できます。 やり方は簡単で、Base.finalizer()関数がまさにオブジェクトが破壊された時の処理を登録するための関数ですので、これを使うわけです。 finalizer(x, function)はxが到達不可能になったときにfunction(x)を呼ぶ仕組みになっているため、functionに資源を解放するような処理を置いておけば良いことになります。 何かDBなどとの接続を管理する型Connectionの例で考えてみると、以下のように何かm
前回のスタートHaskell第5回に触発されたので色々とモナドをいじっていこうっと♪~(´ε` ) おっと、触発されただけで別にマスターしてないので悪しからず。 まだ全然Monad理解してないのでツッコミなどあったら是非是非お願いします。 さて、状態を扱えるControl.Monad.Stateを使って基本的なデータ構造であるStackを実装してみる。 ご存知のとおりHaskellには状態という概念がないので、Monadを使ってシミュレートするわけだ。 とりま、型だけ書いとけ 今回実装する関数は、C++のSTLにあるstackを参考にpush,pop,top,size,emptyの5種類 とりあえずまぁ、Stackを扱うState Monadの型をかいてみよう。 module Stack where import Control.Monad.State (State, get, put,
前回の記事で作製した data Stack a = Stack a (Stack a) | Empty deriving (Show) type MonadStack a = State (Stack a) a で問題が発覚したから、ちゃんと直しましょう。名だたるHaskeller達に噴飯されないように。せめて失笑レベルまで持って行きたいな。 型変数追加 で何が問題かって言うと、MonadStackの型変数がaだけでStackに押し込む値の型も、MonadStackの操作で返る値の型も同じaだってこと。 じゃ、それぞれに別々の型変数を用意すればイイね。ってことで型変数bをMonadStackに追加で。 data Stack a = Stack a (Stack a) | Empty deriving (Show) type MonadStack a b = State (Stack a)
前回に引き続きYesodチュートリアルを先に進めていこう。 参考にしているチュートリアルはこちら Haskell web programming 今回は3章Mirrorをやってみる。 こんな入力フォームに"Hello Yesod!"と打つと、そのテキストとテキストをひっくり返した文字列を結合した文字が表示される。 ("Hello Yesod!"と入力した) 実装したコードを見てみると、Handler/Mirror.hsの中では次のように書かれている。 getMirrorR :: Handler RepHtml getMirrorR = do defaultLayout $ do $(widgetFile "mirror") これは、前回つくったEchoでも出てきているが、2つの"$"が登場している。 一つ目の$は関数に引数を適用するためのもの(中置演算子)で、カッコで代用できる。 だから、
著者のMartin Grabmüller氏に許可をいただきましたので、 Haskellモナドトランスフォーマーのチュートリアルを翻訳したものを公開します。 タイポや誤訳、プログラムのミス等ありましたら、 Twitter宛@bicycle1885かコメント欄までご連絡頂けるとありがたいです。 元のテキストやプログラムは以下のリンクから得られます。 Monad Transformers Step by Step [2012/12/19] 誤りを多数訂正しました。id:qtamakiさん、ありがとうございます。 [2014/6/19] 誤りを2点訂正しました。id:daimatzさん、id:hitotakuchanさん、ありがとうございます。 Monad Transformers Step by Step Martin Grabmüller Oct 16 2006 概要(Abstract) この
I've been doing full-time Haskell development for almost three years now, and while I recognize that Cabal has been painful to use at times, the current reality is that Cabal does what I need it to do and for the most part stays out of my way. In this post, I'll describe the Cabal best practices I've settled on for my Haskell development. First, some terminology. GHC is the de facto Haskell compil
-fno-ghci-history, GHCi のコマンド履歴を ghci_history に記録したり読み出したりしない, dynamic. -fno-ghci-sandbox, GHCi のサンドボックスを無効にする. 計算は ...
[ 目次, 前節, 次節, 索引 ] 目次 目次 序文 第二版への前文 第一版への前文 謝辞 1 手続きによる抽象の構築 1.1 プログラムの要素 1.1.1 式 1.1.2 名前と環境 1.1.3 組合せの評価 1.1.4 合成手続き 1.1.5 手続き作用の置換えモデル 1.1.6 条件式と述語 1.1.7 例: Newton法による平方根 1.1.8 ブラックボックス抽象としての手続き 1.2 手続きとその生成するプロセス 1.2.1 線形再帰と反復 1.2.2 木構造再帰 1.2.3 増加の程度 1.2.4 べき乗 1.2.5 最大公約数 1.2.6 例: 素数性のテスト 1.3 高階手続きによる抽象 1.3.1 引数としての手続き 1.3.2 lambdaを使う手続きの構築 1.3.3 一般的方法としての手続き 1.3.4 値として返される手続き 2 データ
Posted on February 18, 2014 by Tim Dysinger Recently I was asked to show how & why I set up my development environment the way I do for Haskell. I’ve also been meaning to resurvey the landscape. It also sounded like a fun blog post. I tried all of the following from scratch again: haskell-mode ghc-mod / flymake hdevtools / flycheck auto-complete with ghci-ng (or 7.8) structured-haskell-mode styli
-fno-ghci-history, GHCi のコマンド履歴を ghci_history に記録したり読み出したりしない, dynamic. -fno-ghci-sandbox, GHCi のサンドボックスを無効にする. 計算は ...
「cabalでパッケージをインストールする際、依存の解消がイマイチでハマりがち」という噂が流れているのは知っていた。 自分が遭遇するまでは「ふーん」と右から左であった。 仔細は省略するが、このたび見事にハマり、cabal hellを目の当たりにした。 熟練Haskellerであれば「こんなのは地獄のうちに入らぬわ!」などと高笑いするかもしれないが、初心者にとっては「面白そうなパッケージ試してみようと思ったらエラーが...解消しようと思ったらまたエラーが...エラー...エラー...」という終わりの見えない状況は十分に地獄と呼んでよいのではないか。 環境: Mac OSX 10.9.2 Haskell Platformのアンインストール ここらへんを参考に、ghcもcabalもない、古き良き時代に戻る。 もう入れなおしだー! % which ghc ghc not found % which
[速報]インテル、Amazonクラウドの新インスタンス向けに、Amazon専用設計のプロセッサを提供したと表明。AWS re:Invent 2014 Amazon Web Servicesは、同社の年次イベント「AWS re:Invent」を米ラスベガスで開催しています。 2日目の基調講演の最後、「クラウドのコア部分についても引き続き進化を続ける」というメッセージとともに発表されたのが性能指向のインスタンス「タイプC4インスタンス」でした。 最大36仮想CPUを備えたこのインスタンスはインテルの最新CPU(Haswell)を用い、同社のインスタンスの中でも最高の性能を提供するものとなります。 この発表にあわせて壇上にはインテル データセンターグループSVP&GM、Diane Bryant氏が登壇(写真右。左はAmazon.com CTO Werner Vogels氏)。 このC4インスタン
PHP の PEAR、Perl の CPAN に相当するのが Hackage です。公開されたパッケージがデータベースに登録されており、カテゴリやパッケージ名等で検索することができます。 個々のパッケージは Cabal と呼ばれるフォーマットで構成されており、容易にビルド・インストールすることが可能です。ここではパッケージのインストール方法をまとめました。 Cabal package のインストール方法 1. cabal コマンドを使う Haskell Platform をインストールしてあれば、cabal コマンドでパッケージをインストールすることができます。 ※Haskell Platform のインストールに関しては こちら を参照して下さい。 まず、最新のパッケージ情報をダウンロードします。ターミナルより以下を実行。 以下は Linuxの場合です。Windows では 「$」を「>
前回の記事でUSBメモリから起動できるPuppyLinux(とAndroid-x86のデュアルブート)を作ったので、必要なアプリをインストールした他、使いやすい設定など記録しておきます。 ※あくまでも” 僕にとって “使いやすい設定です。 使用したPuppyはコチラ。 ・パピーリナックス Precise-571JP(precise-571JP.iso) パピーリナックス日本語フォーラムからいただきました。いつもありがとうございます♪ 設定・インストール方法その他、過去記事を参照して下さい。 ◆Puppy Linix と Android-x86 をUSBメモリからデュアルブートする方法 – WindowsXPから軽量Linuxへの乗り換えを検討中ならこんな使い方はどうでしょう? ◆Puppy Linux – 内蔵ハードディスクにインストール後のGRUB2の設定方法 ◆Puppy Linux
設定を終えたら右下の「Continue」をクリックすると、次にGoogleアカウントの認証画面になります。アカウント名とパスワードを入力。 ※ゲストとしてログインすることもできます。 使用するアカウント画像の設定。 Google+で設定したプロフィール画像も使うことができます。Googleアカウントでログインしていれば左上の人型アイコン部分に表示されます。 起動直後の画面です。設定・操作方法などは後述します。 <補足:VMWareでイーサネット接続が選択できない場合の対処> ダウンロードしたVMWareイメージ(今回の場合はChromeOS-Vanilla-4028.0.2013_04_20_1810-r706c4144-VMWare.vmx)をテキストエディタで開き、 ethernet0.virtualDev = "e1000" を1行追記してから起動すると選択肢に「イーサネット」が表示
Windows XPパソコンにChromium OSをインストールして再利用する~Chromebookを作ってみよう~:中古PC活用(1/2 ページ) 不要になったWindows XPパソコンにChromium OSをインストールし、Chromebookを作ってみよう。Chromium OS は、USBメモリから起動できるので気楽に試すことも可能だ。インストール方法やコツなどについて解説していく。 連載目次 やっと日本国内でも「Chromebook」の販売が始まった。Chromebookとは、Googleが開発した「Google Chrome OS」を搭載した小型軽量のノートPCのことだ。クラウドストレージとWebブラウザーベースのアプリケーションを活用することにより、比較的低コストなハードウェアでも高度な機能を実現できるので期待されている。だが残念ながら、当面は企業向け・教育向け販売に限
Chromium はオープンソースのブラウザで、Google Chrome はこの Chromium が元になっています。 なら、Chrome でいいじゃん。となりますが用途としては、両方入れておけばどっちががおかしくなっても、どっちかは使えるだろという、保険のようなものです。 もともと、Mac 版の Chrome がまだなかった頃に使い始めました。今は例えば、Chrome の Dev 版を試してみたくなった時とかに、保険になってくれます。 Chrome にあって Chromium にないもの細かいことはおいておいて、主なものは以下のとおりです。 Google のブランドAdobe Flash Player の同梱自動アップデート1 は当たり前で。2 はまぁ、必要ならプラグインをインストールすればいいし。他のブラウザも使っていると、結局プラグインをインストールするはめになるから、まぁ、いい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く