タグ

ブックマーク / nobsun.hatenablog.com (2)

  • Haskellに副作用はないのか? - HaHaHa!

    Haskellには副作用はないのか? 議論に微かな違和感があるような気がしたのですが,それが何にたいする違和感かよくわかりませんでした.件の記事を読みかえして,また違和感を感じたので,すこし考えてみることにします. 「副作用」って何のことを言っているの? この手の議論が判りにくくなるのは主たる原因はキーワードが定義が明示されてないことにあると思っています.ここでの議論のキーワードはもちろん,「Haskell」と「副作用」です.件の記事では「Haskellの範囲」については定義が示されていますが,「副作用」については定義が示されていません. 「副作用」=「入出力」なの? 私の頭のなかでは「副作用」というのは,「変数束縛の変更」です.だから,「プログラミング言語に副作用がある」と「プログラミング言語では変数の束縛を変更がある」とは同じことです.「Haskellには変数束縛の変更」はありませんか

    Haskellに副作用はないのか? - HaHaHa!
  • HaHaHa!

    HaskellはIOモナドを使えるので命令的Haskellプログラミングが可能になっているのだが,その代償としてプログラム全体の型は自明なIO ()に潰れてしまう. プログラム全体の型が潰れないような仕組みを考えたのがoiパッケージ.以下は純粋に関数的にプログラムを構成したものである。(もちろん実際には、Haskellのプログラムとして起動するために、main :: IO () が必要であるし、実際の入出力を行うためのプリミティブ関数を構成するにはIOモナドが必要ではある。) {-# LANGUAGE TypeOperators #-} module Main where import Data.OI import Control.Parallel import System.Environment pmain :: (FilePath,FilePath) -> (FilePath,Fil

    HaHaHa!
  • 1