-
Notifications
You must be signed in to change notification settings - Fork 0
tyt6/H
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
-*- encoding: utf-8-unix -*-
Develop stopped.
日本語
中止
haskell->sexp なparser作ろうと思ったが、indent-ruleだけではsexpにならないことが判明.
parseModuleは使いこなせないと判断。
liskellがあれば型推論を使わない場合は簡単に実装できそうである。
古い文章
haskell のIO()内をCみたいにeagerに評価して(IO関数の中身を組み換えます)
import GHC.IOArray
io1:: Ix i => (IOArray i e) -> i -> (IOArray i e) -> i -> IO Io2out
io1 ioarr ix ioarr2 ix2= io2 (ioarr[ix]) (ioarr[ix] <- ioarr2[ix2])
みたい(未定)に書けるようにしたい。
(インストール中に書いてるので良い例が思いつかない。Haskellにも慣れていない。)
上記の例は次のように組み換えます。(コンパイルに-XBangPatterns加えます。)
import GHC.IOArray
io1:: Ix i => IOArray i e -> i -> IOArray i e -> i -> IO Io2out
!io1 arr ix arr2 ix2 = do
! _uniquevar1_ <- readIOArray ioarr ix
! _uniquevar2_ <- readIOArray ioarr2 ix2
writeIOArray ioarr ix _uniquevar2_
! _uniquevar3_ <- io2 _uniquevar1_ _uniquevar2_
return _uniquevar3_
トップレベルの!はこの組み換えを有効にする合図
型推論を使わない場合
import GHC.IOArray
io1:: Ix i => IOVar e1 -> IOArray i e2 -> i -> IOArray i e2 -> i -> IO iofunc1out
io1 iovar ioarr ix ioarr2 ix2= iofunc1 (iocall iofunc2) (ioref iovar) (ioaref ioarr ix) (ioaset ioarr ix (ioaref ioarr2 ix2))
--こちらの定義は参考まで
iofunc1 :: iofunc2out -> e1 -> e2 -> e2 -> iofunc1out
About
develop stopped
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published