[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
198(1): デフォルトの名無しさん [sage] 2011/10/21(金) 09:48:20.45 AAS
>>196196(1): 186 [sage] 2011/10/21(金) 08:04:56.77 AAS
>>190
>>>186
>Richard Bird先生の本を読むのがいいかもしれない。
情報有難う!
Research paperを幾つか、ざっと読んでみた。
まだよく理解出来ない所も多いけど、Haskellって面白い。
鳥先生に興味が出てきたら早速ピアソンのサイトへ行ってAlgebra of Programmingを手に入れるんだ
223(2): デフォルトの名無しさん [sage] 2011/10/22(土) 18:28:23.45 AAS
>>222222(1): デフォルトの名無しさん [sage] 2011/10/22(土) 18:02:28.53 AAS
今更気付きましたが、Win7のx64環境です
だからダメと言う事は在るのでしょうか?
ghcにあわせてwin32版を落として設定して失敗してます
ごめん、言い忘れてた
私の環境は
OS : Windows7 Home Premium 32bit
Haskell Platform : 2011.2.0.1
これ以外の環境でどうやるかは分からない
> だからダメと言う事は在るのでしょうか?
あるんじゃないかな
64 bit 版の All-in-one bundles でやってみたらどう?
さっき提示したページの上部に [Download] のリンクがあるから、
そこから 64 bit 版へ飛べる(まだ実験バージョンだと書かれているが)
235: デフォルトの名無しさん [sage] 2011/10/22(土) 22:55:21.45 AAS
>>234234(1): デフォルトの名無しさん [sage] 2011/10/22(土) 22:25:23.49 AAS
>>231
たとえば [1..3] は 1 : (2 : (3 : [])) であり、
「リストを構成するデータ型」の値だ
そして、 : や [] はこのデータ型の「値構築子」だ( : は中置値構築子)
last 関数は、last [] = errorEmptyList "last"; last (x:xs) = ・・・
という形のパターンマッチを行う関数だ
last [1..3] は last (1: (2 : (3 : []) なので、
(x:xs) にパターンマッチし、x=1、xs=(2 : (3 : [])) と束縛する
リストに限らず、データ型の値を作ってる値構築子の引数(この場合は 1 や 2 など)は、
このようにパターンマッチさせて値構築子を剥がす事でしか参照できない
で、リスト 1 : (2 : (3 : [])) がこのようなネスト構造を成している以上、
ネスト構造を「順に剥がしていく」ことでしか中の値は参照できない
ちなみに、f (_:_:x:_) = という関数で f [1..3] などとして一気に x=3 と束縛しようとしても、
内部で順に値構築子を剥がす処理をしてパターンにマッチするかを調べるから同じ事
これを 「Haskellの出来」 というのなら、そうだね、としか言いようがない
haskellの出来じゃない
配列と違って、リストはメモリ上に連続して並んでる保証はない
だから、先頭から順々に次に要素のアドレスを参照していくしかない
配列なら、連続して並んでるから、先頭から要素のサイズをステップ数として、希望の位置までアドレスの参照先をずらせば良い
c言語でも同じ事
(haskellで配列使った事ないから分からんが、配列と言うデータ構造の性質としてはO(1)になるはず)
236: デフォルトの名無しさん [sage] 2011/10/22(土) 22:56:21.45 AAS
x要素のサイズ
o要素一つのサイズ
238(1): デフォルトの名無しさん [sage] 2011/10/22(土) 23:15:23.45 AAS
last [1..3] くらいならコンパイル時に展開してもいい気がするけど
それでじゃあ、この最適化があれば実装の出来がいいかって言われると
うーん
352: デフォルトの名無しさん [sage] 2011/11/02(水) 10:19:08.45 AAS
>>350-351
サンクス
家帰ったら、試してみる
374: デフォルトの名無しさん [sage] 2011/11/05(土) 21:11:15.45 AAS
>>373373(1): デフォルトの名無しさん [sage] 2011/11/05(土) 21:03:14.21 AAS
CArray
ありがと、調べてみる
412: デフォルトの名無しさん [sage] 2011/11/08(火) 12:47:18.45 AAS
どうでもいい。
好きなほう選べば良い。
468: デフォルトの名無しさん [sage] 2011/11/11(金) 08:48:39.45 AAS
>>467467(1): デフォルトの名無しさん [sage] 2011/11/11(金) 03:36:49.91 AAS
c言語でのint (*)[4]型っぽいものをhaskell的に表現する場合、
* = Pointer, [] = Array4, int = Intと置き換えて、
Pointer (Array4 Int Int Int Int)とでも書けるんだろうけれど、
int (*)[100]型とかになってくるととても書いていられない。
何か上手い方法はないだろうか。
用途ねーだろって突込みは無しで。
コード生成じゃ駄目?
581(1): デフォルトの名無しさん [sage] 2011/11/18(金) 12:24:03.45 AAS
肝心のエラーは?…
611: デフォルトの名無しさん [sage] 2011/11/28(月) 19:51:34.45 AAS
型検査って何?
具体的にどういう処理をするのが型検査なの?
738(1): 712 [sage] 2011/12/18(日) 21:56:10.45 AAS
>>736736(1): デフォルトの名無しさん [sage] 2011/12/18(日) 20:27:25.38 AAS
>>731
もっと詳細を書いてくれないと、同じ環境で同じ問題にぶち当たった人しかアドバイスできないよ。
すいません
まず最終的にやりたいことは、PostgreSQL に作ったテーブル内のデータが UTF-8 の日本語で、
その文字列データを取得してコマンドプロンプトに表示するプログラムをHaskellで作る
ということ
Haskell コード内でその文字列データ([Char] 型)を変数に束縛するとことは問題なくできた
というのも、その変数に System.IO.writeFile 関数を適用して得られたファイルを見ると、
正しく UTF-8 エンコードの日本語になっていたから
(当然だけど、writeFile の前に hSetEncoding 関数を utf8 に適用している)
コマンドプロンプトの方は、cmd.exe へのショートカットファイルのプロパティで
[オプション タブ]-[現在のコードページ] を "932" に、
[フォント タブ]-[フォント] を "MS ゴシック" に、
[ショートカット タブ]-[リンク先] を "%windir%\system32\cmd.exe "/K chcp 65001" に設定
このプロパティでコマンドプロンプトを起動し、その上で ghci を立ち上げ、
自作の *.hs ファイルをロードして、関数を評価しているが、
先ほどの [Char] 型の変数を ghci 上で評価すると utf-8 文字がエスケープされる
( ascii 文字以外は \ マークと数字数桁で表示される)
同じ [Char] 型の変数に putStrLn 関数を適用すると、
>>712712(9): デフォルトの名無しさん [sage] 2011/12/18(日) 01:52:22.20 AAS
Windows + ghci での日本語表示について質問です
コンソールの文字コードを cp65001 (UTF-8) に変えて、
フォントも UTF-8 が表示できる [MS ゴシック] を使ってます
Haskell 関係無しに、コンソール上で type "ファイル名" とコマンドを打てば、
UTF-8 エンコードされた日本語テキストファイルは問題なく表示されます
この状態で ghci を立ち上げて、
s = "テスト" と記述された hs ファイルをロードし、
putStrLn s とすると、「テ・・ス・・ト・・」と表示されます
どうして余計な文字まで表示されるのでしょうか
ちなみに、実際のところ余計な文字は全角中点「・」ではなく「�」です
MSゴシックだとたまたま全角中点に見えるだけで、何か別の文字みたいです
[環境]
Windows 7
GHC 7.2.2
(正確には >>713713(1): 712 [sage] 2011/12/18(日) 01:55:56.12 AAS
>>712
> MSゴシックだとたまたま全角中点に見えるだけで、
すいません
コンソールの表示をよく見たら、全角ではなく「半角中点」に見えます
つまり 「テ・・ス・・ト・・」 と表示されているように見えます
)のように日本語部分だけ各日本語文字1字に対して
余計な文字が2つずつ後に付随してくる(まぁエスケープに比べて読めなくはない)
どうすれば、コマンドプロンプト(コンソール)に UTF-8 日本語を正しく表示できるのだろうか
上記の現象はデータベース処理とは関係なく、UTF-8 エンコードされた
Haskell プログラムが書かれたファイル内に直接 s="テスト" と書いて、
それを ghci 上で同じように評価したりしても再現できるため、
>>712 では現象再現のための最低限の情報だけで質問しました
780(3): デフォルトの名無しさん [sage] 2011/12/22(木) 05:28:49.45 AAS
>>778778(6): デフォルトの名無しさん [sage] 2011/12/21(水) 19:40:34.62 AAS
>>767
data Where = Before | Here | After
whereIncluded :: (Eq a) => [a] -> [a] -> a -> Where
whereIncluded _ [] _ = After
whereIncluded (a:as) (b:bs) x
| x == b = Here
| x == a = if elem x bs then Here else Before
| otherwise = whereIncluded as bs x
[説明]
・listA と listB それぞれの head と x を比較する
・listB の head と x が同じなら、x は listB に含まれる
・そうではなく listA の head と x が同じ場合、
x が listB に含まれていなければ、x は後方にある
・どちらの head とも異なっていれば、両者の tail に対して同計算を繰り返す
・計算を繰り返した結果 listB の tail が空なら、x は後方にある
提示された条件を全て完全に満たすものとして式を書いたので、
エラー処理は省いてある
whereIncluded [1..6] [5] 4 = whereIncluded [2..6] [] 4 = After
806: デフォルトの名無しさん [] 2011/12/23(金) 19:27:53.45 AAS
>>799ありがとう。読んでみる。
870: デフォルトの名無しさん [] 2011/12/25(日) 20:50:43.45 AAS
>>867867(3): デフォルトの名無しさん [] 2011/12/25(日) 20:21:39.10 AAS
>>858 >>864
ああ、また見捨てられてしもた。いっつもこうや。わしに学がないばっかりに。
ふつうのプログラムはやってるから、あのIOやエラーは知ってるし、
Maybeなんちゅうのがあるらしいのも知ってるけど、そんなんじゃ
話がわからんちゅうこっちゃろな。
Monad入門ってどこにあるんですか?
今日は冷えるわ。
俺も学の無い人間だけど、モナドはOOPでいうインターフェースに当たる型クラスって機能を使って構築されてるって言えば何をしたいものか大体わかる?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s