関数型プログラミング言語Haskell Part23
1 :
デフォルトのモナドさん :
2013/08/10(土) 14:16:47.18
2 :
デフォルトの名無しさん :2013/08/10(土) 14:17:49.87
OCamlはもうすぐReal World OCaml出るらしいが、Haskellはなんかないんかね 今ある本って初心者向け以外は古いよね
Real World Haskell 改訂版か...それが今一番望まれてる?
もっとすごいH本ではなかろうか
イカ娘本買ってきて
三:=>
オラHaskellでゲーム作るぞと意気込んでたけど 副作用がある部分書こうとするととたんに面倒になるからだんだん飽きてきたぞ
"Haskell Arrow"でググったらwhitehackerzのサイトが出てきて 人生の貴重な10秒間をゴミみたいな茶番で無駄にしたんだが あとGoogleのサイトブロック機能使えなくなってるじゃねえかあーくそ
新スレおめでとうございます^^
ここの人はScala触ったりしないの? Javaの資産使えたりEclipse使えたり本もHaskellより多そう 俺は勉強中の身なんでHaskellに集中します
遅延評価デフォの方が面白い 実用的かどうかは知らんが
ScalaはJavaの資産そのままそっくりというわけにはいかない 標準のフレームワークが(結構)重い そしてHaskellのクラス/インスタンスみたいのをやろうとすると面倒 JVMで動くだけでかなり魅力的だけどね
JVM上で動く実用的なHaskell処理系ってあるのかな?
Fregeは結構本気でHaskellをJVMに、って感じでやってるんじゃないの? 使ったことないので言語仕様がどうとかは知らない
アセンブラのように低レベルじゃない中途半端な言語使って 製品にも昇華できない >・本物のプログラマはHaskellを使う >//itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/?ST=ittrend こんなのを誇らしげにテンプレに入れてる ほかのテンプレの質も低下してる ゴミが増えてる 論理力も無く、話に一貫性も無く、支離滅裂で感情論たれ流しで、ユーモアも無く、具体的な話しかできない
誇らしげだとか質が低下だとか言うけど、前スレのをコピペしただけだよ。 荒らしたがってる所ごめんね。
つ鏡 と思ったが俺のことが書いてある。
ユーモアは関係ないだろ!!!
ユーモアは大切じゃね?
バーナム効果にひっかかるゴミクズ
論理力って何?論理性なら知ってるけど(アスペ)
論理を正しく使う能力のことを言いたいんじゃね?
アスペルガー症候群=天才 イメージが蔓延 天才のフリをする自称アスペが後を絶たない
べつにいいんじゃね 天才のフリを見ぬかれるのならバカだし、見ぬかれないのなら天才なんだよ
諸君、議論したまえ
諸君、
33 :
デフォルトの名無しさん :2013/08/22(木) 21:25:07.97
すごいHaskell〜を読み終えたんだが、他に何読むといい? 理論派なんで難しければ難しいほど嬉しい。
日本語じゃないとダメなの?
「関数プログラミングの楽しみ」 「関数プログラミング入門 ―Haskellで学ぶ原理と技法―」 前者が難しいと感じたら後者で勉強する方向で。 あるいは自称理論派ならHaskellなんかやめて依存型にでも進めば?和書はAgdaもCoqも一切ないけど。
36 :
33 :2013/08/22(木) 23:05:41.15
ありがとうございます。英語は全くわからないので。。。 関数プログラミングの楽しみを読みたいと思います。
ちょっと補足しておくと
「関数プログラミングの楽しみ」はその道の研究者が出してるおもしろ論文集みたいなもの
関数プログラミングについてもかなり分かっていて研究論文も普通に読みこなせるレベルの人が読むもの
もし関数プログラミングに触れたのはすごH本が初めて、というのなら
「関数プログラミング入門(IFPH)」を読んでも得るものは大きいはず
あとは多少英語苦手でも関数プログラミングを極める上でなんとしても読むべきって感じなのは
Purely Functional Data Structure(PFDS)とPearls of Functional Algorithm Design(PFAD)
検索してみたらPFADはIFPH訳者の山下伸夫さんが翻訳してるらしいのでそれが本になるのを待つのもありかもね
http://partake.in/events/439f62de-94ae-48d2-a4d8-f931fe26a278
Pearls 〜日本語版読みたい!
Haskell初心者です
HaskellはIOモナドを用いることで参照透明性を保ったまま入出力を扱える言語だと聞きました
しかしDebug.Traceという関数にはそれ自体に副作用があり参照透明性が守られていないと知りました
http://blog.booklive.jp/?p=225 「Haskellでは絶対に参照透明性が保たれる」は正しくないということでしょうか?
何事にも例外はある
別人ですけど、副作用部分って出力だけだから参照透明性が保たれてるように見えるけど そういう場合も保たれてないってことになるのはなんでです? 副作用がある時点で何が起こるかわからないから?
>>42 純粋でない操作を行った時点で参照透過じゃないんですね。
まだ頭がついていってないですが、意味の理解はできました。
ありがとうございました。
種が*->*になるように型[a]をクラスのインスタンスにするには "instance Functor [] where" などと書けばいいですが 型[(a,a)]をクラスのインスタンスにするにはどうすれば良いでしょうか 気持ちとしては instance Functor (\a -> [(a,a)]) where ... なのですが…(Functorはあくまで*->*の一例です) newtypeやdataは型構成子を書いたり余計な記述が増えるので使いたくありません
無理
なんで?
しらね
>>46 型レベルにラムダはないし、それに代わるものもないから
50 :
デフォルトの名無しさん :2013/08/30(金) 17:19:22.06
遅延評価って要はメモリスタックしないって事でいいの?
メモリスタックってなんだ?
52 :
デフォルトの名無しさん :2013/08/30(金) 19:24:06.88
間違い スタックオーバーフロー
違う 遅延評価はそのような利点も持つ場合があるが 定義としては式の簡約の仕方(最外簡約)のこと
え、「遅延評価」 と 「最外簡約」 は同値? 遅延評価なら最外簡約、最外簡約なら遅延評価ってこと?
サンク溜まってオーバーフローあるじゃん
>>55 初めて知った。そんなのあるんか。
サンクサイズってどこで指定するんだ?
57 :
デフォルトの名無しさん :2013/08/30(金) 22:37:22.28
物理的等価性,構造的等価性の違いみたいなもん?? 頭こんがらがってきた
無駄な計算リソースを割かないために 誰かが実際に触れる時までは実行・計算しないという評価方式 スタックオーバーフローは関係ない 末尾再帰でもしてなきゃ普通に起こる
59 :
デフォルトの名無しさん :2013/08/30(金) 22:58:02.12
例えばmap使って(これって末尾再帰じゃないよね?) リストでゴリゴリ計算してればオーバーフロー起きるの?
60 :
デフォルトの名無しさん :2013/08/30(金) 23:00:35.36
試しに誰か オーバーフローが起きる 短い関数を書いて欲しい
foldl
>>59 正格な値に畳み込まなければオーバーフローしない
オーバーフローしないんじゃなくて そういう計算を避けて通れる場合があるってだけだ
正格な値に畳み込まなくてもオーバーフローする
サンク溜まってオーバーフローするのはスタックじゃなくてヒープじゃね?
マシンスタックのみをスタックと呼ぶ風潮?
サンク溜まってオーバーフローって具体的にどうすれば起こるの? サンクってそんなに大幅に増減しないような気がするけど
誰も気にしてないけどghcのディスク使用量って大き過ぎないか? 約750MBのうち、280MBがプロファイル付きのスタティックライブラリ(foo-x.yy_p.a)で、 180MBが普通のスタティックライブラリ(foo-x.yy.a)ってのはどうなのよ。
誰も気にしてないから別にいいんじゃね
ghci みたいにカーソルキーとかで履歴だしたりするインタプリタを実装するにはどうすればいいんだ?
>>71 readlineの事なら普通に実装してからrlwrapでも噛ませばいい
ghciが使ってるのはhaskeline
76 :
デフォルトの名無しさん :2013/09/01(日) 22:57:42.36
お前らこんなクソ言語使ってないで javascriptで便利なプラグインとか作ってくれよ ほんまつかえねーわ
君がクソ言語と言って投げ出した言語の方が面白い
パールドカタ最近見ないな
勉強しててこんなにワクワクする言語は俺の中では無かった
「パール=ド=型」不純なものを隔離するための型。フランス語を語源とする
なんか、恥ずかしくなってくるから、正直そういうのやめないか
84 :
デフォルトの名無しさん :2013/09/03(火) 09:39:34.89
2012年 ビッグデータ/Hadoopブーム ってのがありました 日本のHaskellユーザーはそのブームで作り上げられた人間でしかない
2007年あたりにブームになった後 最近また見掛けるなったと思ったら Hadoopなのか?
洗脳が解かれるのも時間の問題だな
より強い洗脳をしないといけない
そして
>>84 みたいなやつを消さないといけない
寒い自演だな
cyokodog/jquery.ex-table-filter
「すごいhaskellたのしく学ぼう」の2版で入った正誤表ってどこにあるの? オーム社で電子版買わなかったらアウトやん
amazon差額3$で電子版サービス日本でもやらないかなぁ
第1版第1刷 13.1 アプリカティブファンクターを強化する ファンクターを導入した動機は、「a -> b 型の関数と、 f a というデータ型があるとして、 どうすれば等の関数を f a から f a への関数に変換できるだろう?」というものでした。 We saw that for this purpose, the Functor type class was introduced and it had us asking the question: when we have a function of type a -> b and some data type f a, how do we map that function over the data type to end up with f b?
いや、ちょっとまて... やっぱり正誤表くらい出してほしいよ。
☓:どうすれば等の関数を f a から f a (←誤入力??) ○:どうすれば当の関数をf a から f b (第4刷) 英語の勉強にもなるし、ものは考えようだよ オーム社にメールしてみれば対応してくれそうだけど、言わなきゃ絶対に対応してくれないぞ 出版社は少ない人数で業務をまわしているっていうし、ましてHaskell本なんてマイナーだからね
いや、1刷だと「f a から f a」なんだよ。 正誤表きっちり出すのが出版に携わる者の役目だとばかり思ってたけど 俺年取ったんだなぁ...
13.4の「うゎぁああああああ落ちるぅぅうううああああ」 って原著をそのまま訳したものだとばかり思っていたけど、邦訳で追加されたんだなw ふざけすぎだろw
くうかい? とかも邦訳にしかなかったな
10円と100円と1000円の買い物をした時に 払う金額のリストを考えてみました map(sum)[[x,y,z]|x<-[0,10],y<-[0,100],z<-[0,1000]] これを任意の組に拡張するには どういう方法があるでしょうか?
>>98 こういうこと?
import Control.Monad
f :: [(Int, Int)] -> [Int]
f = map sum . filterM (\_ -> [True, False]) . concatMap (uncurry $ flip replicate)
main = print . f $ [(10,1), (100,1), (1000,1)] -- 10円を1点、100円を1点、1000円を1点
> 10円と100円と1000円の買い物をした時に
> 払う金額のリストを考えてみました
> map(sum)[[x,y,z]|x<-[0,10],y<-[0,100],z<-[0,1000]]
[0,1000,100,1100,10,1010,110,1110]
7/8の確率で
>>98 は万引きするってこと?
A商品10円 B商品100円 C商品1000円として それぞれ買うか買わないかの選択があるとすると お金の払い方は 0円 10円 100円 110円 1000円 1010円 1110円ってなるじゃん これをA商品から任意のn商品まで 値段設定してお金の払い方の合計をリストでばーっと出したい場合 どうしたらいいかなと思って
import Control.Applicative import Data.Monoid items = [10, 100, 1000] payments = foldr1 (\xs ys -> mappend <$> xs <*> ys) $ (\a -> [Sum a, mempty]) <$> items
>>102 式をいくつかに分けた方が読み易くないか?
アプリカティブとかモナドとか出てくるともうわけわからん 数学嫌いが数式みたときと同じ感覚になる まぁ数学なんだけど
pays :: [Int] -> [[Int]] pays [] = [] pays (x:xs) = (map (x:) (pays xs)) ++ (map (0:) (pays xs))
これでできたリストにsumをmapして重複を除けばいいはず
α+β+γ+δ=c(定数) α,β,γ,δ,c∈全ての非負の整数の集合 @α<β<γ<δ Aα≦β≦γ≦δ @Aそれぞれのときに、成り立つα,β,γ,δの組を全て挙げるコードを書いたけど これ何か応用先あるかな?
Haskellやるからにはちゃんと型やモナドで処理を意味づけしたい これが僕が女子大生に圏論を教わる理由です。
>>107 気になるあの娘の暗証番号を聞き出すマジック
なんでマセマティカみたいに文字式のまま方程式解いてくれるライブラリが無いの?
世界がそれを望んでいないから
あんなのボランティアで作ろうとするやついないだろ
世の中には言い出しっぺの法則というものがあってな・・・
つまり
>>111 がそういうライブラリを作って公開してすればいいと思うよ
じゃあ、HaskellからPythonを呼べばいい
そのPythonからHaskell呼んでもらおう
間を取ってPascalにしよう
119 :
デフォルトの名無しさん :2013/09/06(金) 10:35:20.72
Pykel が良いな
120 :
デフォルトの名無しさん :2013/09/06(金) 12:00:28.38
Scalaでええやん
それは無いわ−
122 :
デフォルトの名無しさん :2013/09/06(金) 12:06:23.93
Yesodとかの話もここで良いの?
いいんじゃない。 WebProgにはないだろうし、スレも盛り上がるし。
関数型言語は学習コストが高すぎる。 玩具として、研究者や学生の自己満足として、 教科書や黒板を賑わすアクセサリーとして、 あるいは頭の体操としての価値は認める。 だが、仕事ではほとんど使い物にならない。 やれば作れる、実際に作った、そんな言い分は聞き飽きた。 主要なソフトウェアのほとんどは非関数型で書かれている。 関数型がプチブームだが、爆発的に採用が増えているとも考えられない。 いずれ関数型のブームは去るだろう。 仮に関数型が生き残ることがあったとしても、 手続的な言語における一部の機能としてだろう。
125 :
デフォルトの名無しさん :2013/09/06(金) 12:41:34.69
なぜ仕事をトッププライオリティーに持ってくるんだろう?
>>125 プログラムした対価としてお金をいただけるから
いや、OCamlやLispやScalaは普通に使われてるだろ それぞれ金融関連とか仮想化アプライアンスとかウェブサービスとか
128 :
デフォルトの名無しさん :2013/09/06(金) 12:48:08.87
稼ぐ手段としてなら使えないと言うより 稼げないと表現した方がいいのでは? そして世の中にはお金を稼げない事象なんて 腐るほどあるんだから 稼げるのが当たり前って前提が取り除いて評価しないと アンフェアだよな
思いついた金儲け及びそのネタ探し、実証の場面において 副作用を殆ど必要としなかった(加えて遅延評価が有効)からHaskell使ってるわ
131 :
デフォルトの名無しさん :2013/09/06(金) 12:59:46.63
俺は神が創ったこの世界の 一部分をのぞき見るのが快感なのさ それがまだ誰にも発見されてない部分なら尚更 な
知的好奇心、探究心、発見(苦笑) どいつもこいつもこんなのばっかりw
自演乙
134 :
デフォルトの名無しさん :2013/09/06(金) 14:04:31.69
痛たた
関数型プログラミングが理解できない動物の妬みだね 分からないなら分からないで大人しくすればいいのに
痛すぎ Haskeller全般が偏見持たれるから、そういうのはちょっとやめてくれ
「偏見」って凄く副作用っぽい香りするよな
知的好奇心、探究心、発見(苦笑) こんなの腐るほど聞いたわ 聞き飽きたわ アホ「ん?だから発見とかさ知的好奇心を満たすっていうか覗き見るのが快感なのさ、探究心とかね」 自分「だよなぁ」 心の中(うわでたーーwwこんなやつよくいるわwこういうやつこれで100人目だわw) Haskellを使う理由を 知的好奇心、探究心、発見(苦笑)等の感情論以外から言ってください
関数型言語でフリーソフトを作って積極的に成果をアピールとかほとんど聞かないよね Real World Haskellとか読むとかなり実用的なトピックが揃っているのに どういうわけか実用的なフリーソフトを関数型言語で作ったという話はほとんど聞かない
アホ「なぜ実用的であることが重要なのか」 自分「 笑 」
142 :
デフォルトの名無しさん :2013/09/06(金) 14:37:32.65
使うのに理由を求めてるのが面白いな 生きる理由を探してるようなもんだ 死んでないから生きている ただそれだけの事に理由を探すなんて馬鹿げてるね もし理由が証明できたとしても それは命令型では無いって事は分かる
143 :
デフォルトの名無しさん :2013/09/06(金) 14:40:15.30
演繹的な思考に慣れ過ぎてるから 帰納的な思考を想像できないっぽいな
>>140 関数型言語での実用的なフリーソフトはOCamlのおかげで結構ある。
Haskellは残念ながら同コミュニティ外で使用されるのは少ないね。
Haskellだと上でも上がってるけどYesodは掛け値なしで良いかな。
LL言語のような手軽な環境がついてる上に、ネイティブだから速度良好。
理系は演繹的に論を進めるイメージがあるけれど 実際には実験データから帰納的に導かれる結論を仮定としてそれを演繹的に証明する みたいなこともよくする。文系の学部こそ演繹的な推論が求められそうだけど 帰納的に考える必要があるとしたら、例えばどんな場面だろう?
>>145 直観でなくきちんと経験則に基づく事柄は、みんな帰納的だろう。
それと完全にスレ違いなんで、できれば別のとこでやってほしい。
お前 〜はやめて欲しいしか言わないね
結局のところ、関数型言語って主にどこで活躍してるの? 議論のためにしか使われてないイメージなんやけど
149 :
デフォルトの名無しさん :2013/09/06(金) 15:26:52.88
>>148 ドーナッツの穴みたいなもんじゃね?
穴はあるのかないのか
2chももう潮時かな・・。
151 :
デフォルトの名無しさん :2013/09/06(金) 15:35:23.89
ペアノシステムをプログラムの中で実現してるのを 最初に見た時に感動受けた まさにドーナツの穴に森羅万象が見えたような気にさせてくれた
まさにドーナツの穴だな 食えないし値段は付かないし でもこだわる人はとてもこだわる部分 関数型言語はそういうもの
好きでHaskellを使っているのだから、正直ほうっておいてほしい
あと○年でHaskellがメインで使われるようになる!とか妄言吐くやつがいるからなあ
10年前からメインで使ってますが
この先もGHCがデファクトスタンダード一人勝ちなの?
157 :
コイヅカ :2013/09/06(金) 21:56:28.34
ちがうなぁ
f x y = (x + y) * (x + y) は f x y = let t = x + y in t * t のように書かなくても x + y の部分は1回の計算で済みますか? また、下のような場合はどうでしょうか f x = elem x [1..10000] && elem x [1..10000] また、局所変数の含む場合はどうでしょうか f x = let xs = [1..10000] in elem x xs g x = f x && elem x [1..10000]
おまえらはセンスが良いなぁ。
>>151 みたいに関数型の数学性に魅せられたが結局何も見出せなかったみたいな。
>>141 ←こういう奴はもはや生きている価値すらない亡者。己を無価値とし他人の命令に全てを委ねてるやつ。
そういったことは各々の世界観に依るのです それはそうと最近世界観という語を物語の世界の設定情報の総体的意味で使用する人が増えてきました 指摘すれば空気の読めない奴扱いを受けます この気持ちとどう折り合いをつけたら良いですか?
自己陶酔のための道具じゃないんだけどなぁ。
162 :
デフォルトの名無しさん :2013/09/07(土) 10:18:09.64
関数型言語は学習コストが高すぎる。 玩具として、研究者や学生の自己満足や話のネタに、 教科書や黒板を賑わすアクセサリーとして、 あるいは頭の体操としての価値は認める。 だが、仕事ではほとんど使い物にならない。 やれば作れる、実際に作った、そんな言い分は聞き飽きた。 主要なソフトウェアのほとんどは非関数型で書かれている。 関数型がプチブームだが、爆発的に採用が増えているとも考えられない。 いずれ関数型のブームは去るだろう。 仮に関数型が生き残ることがあったとしても、 手続的な言語における一部の機能としてだろう。
>>158 GHCなら、コンパイラの気分次第
常に1回の計算で済むことは期待できない
常に2回計算することも期待できないけど、
-fno-cse -fno-full-lazinessを与えればたぶん2回計算してくれる
164 :
デフォルトの名無しさん :2013/09/07(土) 12:11:17.12
unsafePerformIOを仕込めば評価回数がわかるはず
関数型がブームだと聞いて
>>165 聞いたから何だ?
最後までちゃんと話せ
なにか質問があるのか?
議論したいのか?
Haskellについて何か語りたいのか?
>>166 俺もたった今興味を持ちそうになっただけなんだ。。。
そんなに圧迫面接しないでくれよう。。。
批判に敏感になり過ぎ
169 :
デフォルトの名無しさん :2013/09/07(土) 15:49:06.08
unsafePerformIOを仕込めば評価回数がわかるはず
>>167 それは悪いことしたが、それとは別に、途中で切らずに最後まで何か言えよ
Haskellの何が楽しいのか訊いても良いし、
入門者に適したページを紹介してくれ、でも良いから
初学者ですが、言語拡張は標準になるまで基本的に使わない方がいいんですかね。 たまにコンパイルエラーで「Xhogehogeを使え」とか言われるのですが 安易に使って将来使えなくなったりするのが不安で。 言語拡張といっても、標準になりそうなもの、実装されたばかりのもの、 廃止されるまでの過渡状態のものなど色々だと思いますが、まとまった リストがあればいいのですが。
>>171 GHC以外の処理系に対応したいのでなければ躊躇なく使うべき
よほど不人気でない限り、言語拡張が廃止されることはない
(ここ数年で廃止されたのはLinearImplicitParamsとGenericsくらいだと思う)
TypeFamiliesとかTemplateHaskellみたいに人気のある拡張でも
標準に入る見込みがなさそうなのもあるし
173 :
デフォルトの名無しさん :2013/09/07(土) 18:32:11.94
モナド内包表記とかは紆余曲折あったりするけどね
>>166 研究室新配属の3年生を叩き上げる院生キタ━━(゚∀゚)━━!!!
>>172 単相性制限は望まれても愛されてもいなかった
C言語で大きい行列を扱うときにallocしたメモリを使い回すのはよくやられると思うけど、Haskellでそういうことするのは無理かな? まあ、必ずしも使い回す必要はないんだけど、大きい行列を扱うのは向いてない?
>>177 大きい行列を扱うのなら、C言語でもHaskellでも他の言語でも、
普通はLAPACKなどの行列専用ライブラリを使うのでは?
HaskellからLAPACKを使うのならhmatrixというライブラリがある。
行列とは意味合いが異なるけど、Haskellで配列を効率よく扱う方法は他にもある。
たとえばrepaというライブラリ。
これは、配列に対するいくつもの演算(2つの配列の要素同士を加算したり、畳み込みをしたり)を、
内部で合成してひとつの一連の計算にして実行する。
つまり、計算用の中間バッファを極力作らないように自動的に処理してくれるから、
こと演算においては「メモリを使い回す」ということをプログラマ側が考えなくても良い。
(repa で2次元配列を行列とみなして、行列同士の積を演算することもできる)
>>178 レスありがとう
hmatrixは少しだけ見てみたんだけど、大きい行列を繰り返し使う事が効率よくできるかどうか分からなかった
ちゃんと調べてみます
repaってのはよく分からないんだけど、例えば行列の各成分の要素を定義する関数を書いて、その行列に
列ベクトルを掛けると内部では行列そのものは保持しない(結果のベクトルの保存にだけメモリを使う)って
いう動作になるのかな?それならかなり理想的なんだけど
hmatrixはメモリ領域を使い回したりしないよ
大きい行列を使い回すのが重要なのは以外だ 素人考えだと、大きい行列ならメモリ確保のオーバーヘッドは相対的に小さくなりそうなんだけど メモリアクセスの局所性とかに効いてくるのかな
>>179 > 行列の各成分の要素を定義する関数を書いて
これはできる。
i 行 j 列目の値を表す関数をひとつ書くことになる。
その関数の中で、変数 i と j を使って要素の値を計算する。
> その行列に列ベクトルを掛けると内部では行列そのものは保持しない
まず repa には行列というものはなくて、多次元配列を扱うものだから、
n行1列の2次元配列を定義して、それをプログラマが列ベクトルとみなして扱うことになる。
で、繰り返すが repa は行列を扱うライブラリではないから、
2次元配列を行列とみなした場合、その積の演算はプログラマが定義してやる必要がある。
ghc の最適化オプションを ON にすれば
具体的には、2つの配列を元に1つの配列を作る関数が用意されているから、
その関数に「3つ目の配列の要素を定義する関数」を渡してやる。
その渡した関数の中で行列の積を表現する計算をしてやることになる。
> 結果のベクトルの保存にだけメモリを使う
すまん、正直言ってそこまで最適化されるかは私には確証がない。
ghc の最適化オプションを ON にすれば、理論的にはちゃんと最適化されるはずだが。
ただ、ここまで言っておいてなんだが、repa の扱いは初学者には少々難儀するかも知れん。
配列定義の表現が独特で、各関数の意味も理解するのが難しいと思う。
>>180 そうなんだが、「必ずしも使い回す必要はないんだけど」ということから、
質問者が知りたいのは、使い回すことではなく、
大きな配列を効率よく扱う方法一般ではないかと思ったので紹介した。
元の質問に真面目に答えるなら、 >C言語で大きい行列を扱うときにallocしたメモリを使い回すのはよくやられると思うけど、Haskellでそういうことするのは無理かな? 普通はやらないけど(たとえばhmatrixはやらない)、自分で書くならもちろんできる >まあ、必ずしも使い回す必要はないんだけど、大きい行列を扱うのは向いてない? そんなことはない
結局C/C++で創られた有力ライブラリを呼び出すことばかりしかしてないじゃん 他人の褌で相撲してる感じ 地産地消が関の山で他の言語に影響与えられないのかよ
来たよ底辺プログラマのラッダイトw
187 :
177 :2013/09/08(日) 01:36:43.19
詳しい回答ありがとう。 repaはcabalでインストールしようとしたらDLできなかったんで、 まずはhmatrixから使ってみるよ。
学校の演習でHaskellのArrayの2次元配列でガウスの消去法を実装したけど、100×100程度の行列なら問題なく動くよ 1000×1000はダメ Celeron 2.7GHz, メモリ1GB, WinXP, ghc 7.0.3
代数的データ型って何? そもそも代数的って何? C言語のstructみたいなデータ型と何が違うの?
>>185 > 結局C/C++で創られた有力ライブラリを呼び出すことばかりしかしてないじゃん
君は使ったことも調べたことすらないから知らないのだろうけど、
repa は 100% Haskell 製の高速配列ライブラリだよ。
> 地産地消が関の山で他の言語に影響与えられないのかよ
これも君は知らないのだろうけど、
Parsec や QuickCheck などの Haskell 製ライブラリは、
多くの他の言語のライブラリに大きな影響を与えたよ。
土方にマジレスしたら可哀想だよ
まともにメンテされてないライブラリが沢山あって なんだかんだでCのライブラリを呼び出すものが一番安定しているイメージ
>>188 1000×1000で消去法が動かないなら書き方が悪い気がする
>>193 こんな直球かつ平坦でわかりやすいものを、よく持ってこれるな。
引き出しの多さに感心した。
>>195 今、Data.Arrayだけで実装してみたけど、100×100でもヤバい
ピボットが1個進むごとに上三角行列を作り直すから100×100行列が100個生まれる 100万要素の配列だから問題ないと思うが、listArrayがバカなことをやってたら…
>>200 その100個の行列を一個の配列上に作るのはメモリの無駄遣いだろ
毎回新しく100×100行列を作って使い捨てるべき(それか可変配列にしてメモリ再利用)
202 :
デフォルトの名無しさん :2013/09/08(日) 18:12:59.36
諸君、議論したまえ
産業ハスケル団!
結局のところ退職エントリで叩かれない給与水準が確保できるかに尽きます。 ちなみにRubyプログラマの私は900万です。(発言小町風)
207 :
言語バカは死ねw :2013/09/11(水) 20:56:05.53
実用的なもの作れゴミ 焼くただずが 言語バカってまじいらねーわ なんかくだらねえ文法とか言ってるだけwwwつかえねーwwwまじつかえねーわw そこらへんのクソウェブサービス乱立してるやつほうがまだ使えるわw さっさとのたれ死ネゴミ
かわいそう・・・
知的要求と自己陶酔とモナドクラスタに属したいので使ってるなぁ 自分が何者であるかHaskellをやれば簡単に証明できるからなぁ ファッションみたいなものかなぁ
それもまた、かわいそう・・・
アプリを書き、ライブラリを書き、既存プロジェクトに貢献するなら 自己陶酔でも何でも歓迎
real world haskell 2nd 日本語版はよ
214 :
デフォルトの名無しさん :2013/09/12(木) 22:30:52.11
すべてのソフトウェアを無料にして、日本のすべてのプログラマを失業させる それが私の夢です
そもそも何処も彼処もソフトウェアのカスタマイズみたいなものが仕事で、 後はハードウェア依存か環境依存で車輪の再発明をしているだけでそ OSSなんか普及することで、その堅ろう性を保てるわけで プロプライエタリのホゲなんて今後はビジネスモデル自体が疑われるべき存在でふ
>>207 そもそも動的言語で書かれたWebサービスって、実際に開発効率良いの?
PHPにしろjsにしろ、デバッグ効率が悪いだけにしか思えないんだけど
PHPとjsは動的言語の中でもウンコな部類です
>>216 プレゼン効率が最高に高い
打ち合わせしながらプロトタイプが完成する
製品版の実装?
そんなの知るか
別にASP.NETでもD&Dで画面設計できるよね?それもC#で Javaのweb frameworkですらscaffordに相当する機能あるのに プレゼン効率なんてものも究極的には言語習得の慣れの問題にしか思えないんだけど 言語習得のイニシャルコストを我慢すれば、関数型言語の方が動的言語より トータルで見たとき開発効率が良さそうってイメージが拭えない
>>219 JavaとCは向こうが知ってるからその場でごまかせない
>>220 ごまかしで食い繋ごうとしてるレベルではそうらしいな。
なんかこのスレにストールマン紛れ込んでない?
>>219 関数型言語はイニシャルコストが掛かる、の一言じゃ済まない
ベースに数学的な理論を使っているし、関数=数学だから、使いこなせる人もレビューする人も限られる
コスト以前に現実的かどうかの議論が必要なレベル
>>219 中小企業のアプリ開発程度の規模だと、
型の齟齬による誤謬なんて起こらないけどね。
型のう、うじ...?による、ご...しん?
>>223 そもそも関数型は開発プロセスについての研究が途中
とても金を出せるレベルじゃない
RMSはプロプライエタリなソフトを生み出さない世界を創りあげるため 戦う概念として世界をGNUで再構築し偏在することになった おヒゲの魔法少女である。
>>223 数学的理論って言っても、せいぜいwikipediaの記事7,8頁分ぐらいも読めば十分で、
PHPでやるような手続き的な記述ぐらい、すぐに出来るようになるんじゃないの?
それをイニシャルコストだって言ってるんだけど
>>226 これを読めると世代とクラスタを高確率で判定できる
>>227 webだと、色々なものがフレームワークで定石化している印象があって、中堅企業ならともかく、
地方に根付いたweb系ベンチャー()やco-worker()なら手出して良いでしょ
>>222 ,224
あんたらム板の管理でもしてるの?
>>229 PHPでやるような手続的な記述を関数型言語で記述できるようになる程度の
数学的素養を身につけるために十分なwikipediaの記事7、8頁とやらを教えろください
>>229 >数学的理論って言っても、せいぜいwikipediaの記事7,8頁分ぐらいも読めば十分
>これを読めると世代とクラスタを高確率で判定できる
こういう勘違い野郎は淘汰されるべき。
>>233 実務にいらない、と一蹴するなら結構だが、
真面目に学習するという話で、wikipediaで済むわけないだろ。
それと語彙力だけで簡単に人は測れない。ご教授じゃなくてご教示な。
>>235 少しはググッてから他人の揚げ足とったら?
そもそも道具として使うのであって、
関数型言語の研究するわけでもないんだからwikipediaと参考文献で十分だから
真面目に学習?PHPで書く内容をhaskellに置き換えるだけなのに?
237 :
デフォルトの名無しさん :2013/09/13(金) 16:18:56.88
wikiに載ってる小難しい数式がそのままプログラムで書けるんだから ある意味簡単じゃね?
>>236 最初から数学理論なんて必要ない、と一蹴してるなら同意する。
だがwikipediaを読むと提案した時点でそういう事ではないんだろ?
本気で理解する事を考えるなら、
素養のない人間には、簡単な概要しかないwikipediaでは足りないだろ。
それとググるって何をだ?
具体的に頼む。
>ご教授じゃなくてご教示な。
>>239 もしかしてそれが、
>>238 へに対するレスなのか?
ググってみても、ご教授は質問に答える程度の意味では使わんようだが。
まさか講義しろと?
>>241-242 あの、まさかそれ反論のつもり?
せめてアンカ付けてくれないか?
まさか自分で墓穴ほってると思わないだろ。
さっきから気味が悪いんだが・・。
>>238 本気で理解するなんて研究開発か研究分野の開拓ぐらいで、
そのレベルで理解する必要があるなら少なくとも関連する論文10稿ぐらい読むだろ
そして、趣味人がPHPの代替にhaskellのコードを書くなんて
レベルの数学理論なんてwikipediaと関連項目で十分だっていってるの
>>243 墓穴を掘っているのはお前。
なんだ、よかった別人か。
>>244 >趣味人がPHPの代替にhaskellのコードを書くなんて
>レベルの数学理論なんてwikipediaと関連項目で十分だっていってるの
理解している奴にとってはよくまとまってる(事が多い)が、
実際は概要程度しかないから、全く素養がなければ記事単体で理解は無理。
構文覚えさせてソース読ませたほうがまだ早いだろ。
本気で理解の程度の違いについては、見解の相違だろうから何も言わない。
それでググるって何を?
>>245 あんなの3、4流の工学部を出てりゃ十分な素養だから
>それと語彙力だけで簡単に人は測れない。ご教授じゃなくてご教示な。
ご教授じゃなくてご教示だと揚げ足を取ったので、
それが正しい日本だと考えた根拠をググッて参照を明確にした上で煽れ
>>246 >あんなの3、4流の工学部を出てりゃ十分な素養だから
なら理系出身で無いなら、素養ないって事になるだろ・・。
自分で限定してどうすんだ。
結局、同一人物なの?
どう見ても自分でURL出して墓穴掘ってるのに、
煽り方がどうとか、論点ずらしのつもりなの?
さっきから変な事言い出すし、気味が悪いんだよ。
本物のプログラマはHaskellを使うって本当ですか?
>>248 このスレをよく見て判断されるとよろしいんではないでしょうか
>>247 >なら理系出身で無いなら、素養ないって事になるだろ・・。
本質的に素養のない人間は自分で何も調べることが出来ず、多分、
君にはそういった素養がないし、haskellなんて使わない方が良いよ。
>どう見ても自分でURL出して墓穴掘ってるのに、
URLを出したことが、どのような墓穴になるのか具体的な根拠は?
>結局、同一人物なの?
便所の落書きに個人なんてものは存在しない。全てが共有されて局所最適解へ向かう。
無職ニートは何でRuby、Haskellを勉強してるんですか?
>>250 ごめん、もういいや。
ありがとな。時間取らせて悪かった。
>>251 技術幅が狭く、意図的に責任の重い仕事を避けれるから
「wikipedia見てHaskellのプログラミングできるようになる」は、「ブリタニカ辞典読めば法隆寺を建てられる」と同意
法隆寺は無理でも犬小屋のようなものぐらい作れるだろ 関数型の概要だけサラッと学ぶのが不十分なら、 本家のtutorialでも順番に読みつつ手でも動かせば?
PrologのWikipediaくらいだと、金堂くらいは建つかな。
論理プログラミングの定石学ぶなら「〜の技芸」とか読んだ方が良いんじゃない?
どこらへんで数学嫌いになったか語ろうぜ おれ三角関数
確率論だな
割り算(小声)
>>258 「Prologの技芸」 いいですね。論理学的な背景の説明も厚いし。
ゲームプログラマを目指す高校生がアフィン変換や クォータニオンぐらい卒業前に独習してるって気付いたとき
ゲームプログラマを目指す高校生がアフィン変換や クォータニオンぐらい卒業前に独習してるって気付いたとき
265 :
デフォルトの名無しさん :2013/09/13(金) 19:45:55.03
アフィン写像ってあたりまえだけど affine mapなんだな
>>216 Haskellよりは開発効率は高いよ
トラブルシューティングからパフォーマンスチューニングまで
あらゆるノウハウが蓄積されているから「開発効率」は高い
Haskellだとトラブル解決に時間食いまくるだろうね
>>266 トラブルの解決には同意するけれども、
コンパイルされるだろうhaskellのパフォーマンスが動的言語より悪いとな?
>>266 トラブルの解決には同意するけれども、
コンパイルされるだろうhaskellのパフォーマンスが動的言語より悪いとな?
数学の重要性を語り始める、アルゴリズムで数学ができるできないじゃ違う!などと語る(自分が数学ができなさすぎて戒めてる
数学について語り始め 数学は大事と戒め始める 論理的な思考に憧れを抱く 女は論理的な思考ができないとバカにし始める 獣と人間の話をし始める 理系に属したがる(注:文系出身で理系職ついてるやつつは文系を利用してギャップ狙いをし文系なのにすげー!!!といわれようとする スーパープログラマになりたいとわめきだす 無職ニート RubyとHaskellを学んでいる 難しいことをやりたがる それって誰でもできるんでしょ?と誰でもできることをバカにする 無職ニートをやり続けこのままでは経歴が作れないのであせりだしネットでウンコプロジェクトを開いて経歴にしようとする
よし。無職ニートしか当てはまらないからセーフだ
よし。無職ニートしか当てはまらないからセーフだ
Leksahを使ってみようと思うのですが、ビルドしたら >Installing executable(s) in C:\Users\honoka\AppData\Roaming\cabal\bin で止まってしまって、実行(C+R)しても >No errors that can be auto resolved っていうのが返って来てしまいます 何がいけないんですかね…
もうcabalは嫌だ
キャバルにキャバルものを頂戴
さっき最新版をインストールした だんだんプラットホームのサイズが大きくなってるのが、smalltalkの悪夢の再現のようで怖い
2ちゃん●の新システムはHaskellを使ってるらしい
不具合起きたらまたPerl忍者に餌与えることになるな
windows に cabal で yesod インストールしたけど、やたらたくさんモジュール使ってるのね
>>280 まあnodeのexpressとかも同じですし
関西でhaskellの勉強会やってないかな
283 :
デフォルトの名無しさん :2013/09/17(火) 22:41:39.89
加古川でやってたと思う
九州でhaskellのべんky(ry
うどん県でhaskellの(ry
いんたーねっとでみんなでべんきょうかい
自分で勉強会を開く気はないのか?
それでは諸君、議論したまえ
ゲームを作ってみようと思い、とりあえず60fpsで 小さなボールが画面中を跳ねまわるデモを作ったんだが、 設計のことでちょっと訊きたい。 ボールの位置と速度のデータを代数データ型にまとめて、 その値を毎フレーム更新してるんだが、 参照透過性が保たれるから当然次々に使用メモリが増えていくと思う。 (更新前のデータは更新後には一切使わないから無駄なんだが) 今はただのデモで1個のボールが飛んでるだけだからいいけど、 実際にゲームを作るとなると、毎フレームかなりの量のデータが更新され、 その都度使用メモリが急激に増えていくのではないかと思う。 Haskell によるゲーム作りってこういうものなの? それとも、フレーム毎に更新するデータは全て IORef で持つのが普通なの?
モナディウスなんかのコードでも眺めたら?
FRP使ってるゲームプログラムでBan Patternで細かく正格指定してるのも メモリ消費問題を抑え込むためなのかな? さらには diamond 参照問題とかもあるらしいじゃないですかー 理解がおいつかないおっおっおっ
モナディウスはそれでメモリリークに苦しんでたけどな
ゲームやOSを高級言語だけで記述しようとすると 理想と現実の狭間に陥って...アーメーマー
Haskellが効率に苦しんでいるのは 手続き型でできることを抽象化できてないってことなのか それとも遅延評価デフォだと書きづらいというだけなのか
知見が蓄積されてないだけじゃね?
オワコンだしなHaskell
ウェブはバカと暇人のもの Haskellはバカと暇人のもの
>>297 あまり面白くない
もうちょっと捻ってくれんか
まあオワコンなのは事実だろ
オワコンwのスレに態々書込にくる、残念な人達。
た…態々
>>293 quakeつくったプログラマも関数型に興味持ってたよ
オワコン
関数型言語は学習コストが高すぎる。 玩具として、研究者や学生の自己満足として、 教科書や黒板を賑わすアクセサリーとして、 あるいは頭の体操としての価値は認める。 だが、仕事ではほとんど使い物にならない。 やれば作れる、実際に作った、そんな言い分は聞き飽きた。 主要なソフトウェアのほとんどは非関数型で書かれている。 関数型がプチブームだが、爆発的に採用が増えているとも考えられない。 いずれ関数型のブームは去るだろう。 仮に関数型が生き残ることがあったとしても、 手続的な言語における一部の機能としてだろう。
>>302 ジョン・カーマックか
ググったらHaskellについて話してるらしい公演が見つかったけど
スライドもなくただぶっ続けで話してるだけだからリスニングきついw
Haskellブームはとっくに去ったけどな。 今熱いのはOCamlだよ。
>>302 カーマックはこないだのQuake Conより前から
「関数こそプログラムの本質だ」と言ってたと思うけど出展を思い出せない
>>305 カーマックは巻きが入ってもガン無視で話しつづけるから進行泣かせなんよね
>>304 ほとんどの大卒はscheme/prologを学んでるから、haskellの学習コストなんて言うほど高くない
はっきり言えば、動的言語がオワコン。
普及率で優劣を騙るやつに聞きたいんだけど、その理屈だと2chに書き込んでる自身が、世間ではオワコンでFAだよね?
オワコンHaskell
OCamlってなに?perlスレでもみたけど オワコンなんだろ?Haskellはオワコン
いや〜Haskellオワコンって書かれると必死に影響力を下げまいと 信者がオワコンじゃないよ、みたいに喚くのが自薦の用心棒ってやつだね オワコンなんだろ? こんなにオワコンって書かれてる オワコンだろう オワコンHaskellはオワコン
オワコンっていうけど、始まってもいないだろ…
ハスケルは蛹のまま動かなくなってしまいました 人々は落胆しその場を立ち去りました 季節は巡り、ある暑い日のことです 人々がハスケルを見捨てたのも忘れていたその場所を通りかかった所でした そこには妖しくこの世の常のものとも思えぬ冬虫夏草が生えていました
これは何かの引用?
オワコスキー
糞言語Haskell 使う価値生し
>>317 俺の即興だけど、それを知ってなんになるの?
321 :
デフォルトの名無しさん :2013/09/19(木) 23:50:59.57
糞過疎Haskell オワコン
322 :
デフォルトの名無しさん :2013/09/20(金) 00:11:23.40
ハスケルに足りないものは何か?
323 :
デフォルトの名無しさん :2013/09/20(金) 00:15:23.68
人気
C++より実行速度が遅いから実際のプロジェクトで使う気にならない
325 :
デフォルトの名無しさん :2013/09/20(金) 00:26:25.68
>>315 だよなwwww
ってか始まってほしい理由も無いが
クイズ番組に数学が出ない
書籍に数式が1行でもでると売上が3割落ちる
世間の数学アレルギーは相当なもんよ
hasukellがブームになるとか金輪際ナイナイって
326 :
デフォルトの名無しさん :2013/09/20(金) 00:55:18.05
合成写像って高階関数の事?
ネストされた微積ぐらい習っただろリア厨
>>306 そもそも、随分と昔から実用的なライブラリやソフトウェアがocamlで書かれてる
ocamlのバックボーンってINRIAとかいう研究所だけどhaskellは今ひとつ不明
専門卒や業務系ってSATやCSPなんかの理論とは縁遠いんだろうな
>>325 こんだけ世間が狭い人が、何故わざわざスレに来るのかは人類の謎だな。
>クイズ番組
>書籍
>hasukell
>ブーム
ム板と関係ない別クラスタの人種
クラスタとか言うとそれはそれでお里が知れる
市場は衰退の一途なので「明日から実務に使える技術 - XX言語」というジャンルがもうアレゲ 今求められているのは、「テロに使える言語 ハッスルKill - 愛をとりもどせ」みたいなのじゃないかな
-XUsefulTechnology エクステンションはよ
334 :
デフォルトの名無しさん :2013/09/20(金) 09:51:07.43
Haskellはオワコン
はいオワコンです
スレまだ半分も行ってないのに、なんでもう埋め始めてるの?
>>331 そこで、金融計算に強い関数型の出番ですね
貧困層が下克上を狙うには、この上ない市場
オワオワオワコーーーンッツ!!トンガリオワコーンッ!! Haskellはオワコン!!!
339 :
デフォルトの名無しさん :2013/09/20(金) 15:04:18.45
data TES t s = Tes (t -> s)から rev :: (TES t s) -> (TES s t) の型になる関数をどう定義していいかわからないです。 どなたかご教授願えませんか?
>>339 その型になるどういう関数を定義したいの?
書き間違いじゃなければ、その型にまともな定義は与えられない
(無限ループか、例外を投げるしかない)ように見えるけど
逆関数的な何か?
逆関数だから無理だよなあ
343 :
339 :2013/09/20(金) 17:27:17.19
皆さん返信ありがとうございます
ご指摘の通り逆関数を定義したいのですが無理なのですか・・・
>>340 定義したい関数としては Tes(t->s) を受け取って Tes(s->t)を返したいのです。
このtとsのマッチのさせ方(もしかしてひどい勘違いをしていてできないのかもしれませんが)がわからない状態です。
>>343 Tes(t->s)というのはHaskellの表記として正しくないし、意図も伝わらない
(t->s)は型レベル、Tesは値レベルのもの
任意の関数の逆関数を計算するのは無理
(tが有限で、sが比較可能で、可逆な関数以外渡さない、みたいな前提を置けばできる)
345 :
339 :2013/09/20(金) 17:48:37.05
>>344 アドバイスありがとうございます!
なんとかtとsの型だけが取得できればいいんですが・・・
例えば引数としてTes(t->s)を考えた時に
f (Tes x) = のように書いて x に t->s をマッチさせたあとにtとsの型を取得することは可能なのでしょうか?
質問だらけで申し訳ありません。当方はOCamlならある程度理解できているレベルです。
もしなにか知見がございましたらよろしくお願いします
>>345 「型を取得」ってどいう意味?型の文字列表現が欲しいとか?
これを使って何をやりたいかを書くとアドバイスしやすいと思う
やりたいことをOCamlで書いてくれたら分かるかも
348 :
339 :2013/09/20(金) 18:14:49.39
>>346 表現がいろいろ足らなくて申し訳ありません。
ようやく思い違いに気づきました。
Tes(t->s)と書いた時のt->sは抽象化された型tから型sへの写像ではなく
具体的にt->sと定義された関数のことだったんですね・・・
マッチができないのも納得できました。
>>347 OCamlだと型が関数のように引数を受け取れないので少し表現するのが難しい感じです・・・
具体的には(勘違いだったんですが)
f (Tes x) =
let (t->s) = x in
Tes(s->t)
みたいに表現できるのかな?と思っていました。
皆様返信ありがとうございました。もう少し実装する関数を見なおしてみます。
こういうことではないだろうなと思いつつ・・ import Data.Typeable getTesType (Tes t) = snd . splitTyConApp . typeOf $ t -- > getTesType (Tes (+)) -- [Integer,Integer -> Integer]
おおう入れ違ってしまった スルーしてくれ
351 :
デフォルトの名無しさん :2013/09/20(金) 18:21:56.23
たらい回し関数?
352 :
デフォルトの名無しさん :2013/09/20(金) 18:33:04.60
全単写じゃないとダメだから 多相ヴァリアント型でも型推論してくれないな
>>348 >OCamlだと型が関数のように引数を受け取れない
いったい何を言っているんだ
OCaml version 4.00.1
# type ('s, 't) tes = Tes of ('s -> 't);;
type ('s, 't) tes = Tes of ('s -> 't)
354 :
339 :2013/09/20(金) 18:35:12.88
>>350 ありがとうございます。
型は取得できるのはわかったのですがやはり関数とのマッチは無理なようでした。
お書き頂いたTypeRepを取得する関数も参考になりました。
355 :
339 :2013/09/20(金) 18:45:20.81
>>353 あ 申し訳ないです。言葉が足りませんでした。
コンストラクタを関数のように扱えないということを伝えたかったのです。
最初はお書きいただいたものと同様のものでOCamlで書いていたのですが
他の部分で弊害が出たのでHaskellで実装しなおしてるところでした。
>>355 Haskellでもデータ構築子を関数扱いは無理だよ
だからモジュールではわざわざコンストラクタ扱いの関数に落とすわけで
間違い この場合型構築子だ
OCamlはデータ構築子を関数扱いできない点でHaskellと違うけど、
>>339 はそれ以前に代数的データ型を理解してない気がする
359 :
デフォルトの名無しさん :2013/09/20(金) 21:49:57.97
海外じゃオワコンのHaskell
360 :
デフォルトの名無しさん :2013/09/20(金) 21:59:23.50
なんでリストの変数を xs って書くの? 何の意味?
変数xの複数形でxsのリストになるから prologだと、[X|Xs]って表記された影響でも受けたんでない?
362 :
デフォルトの名無しさん :2013/09/20(金) 22:18:29.96
あぁ・・・複数形のsなんだ ありがトン
リストのリストだとxxs, yysなどと書く
>>363 そうだったのか。
おれ自分のコードで xss、yss って書いてた。
危うく外に出して恥をかくところだったよ、ありがと。
365 :
デフォルトの名無しさん :2013/09/20(金) 22:46:40.17
リストって例えば 1:2:3:[ ] → [ 1,2,3 ] こういう事じゃん リストのリストって [ 1,2,3 ] : [4,5,6] : [ ] → [ [ 1,2,3 ] ,[ 4,5,6 ] ] こういう事じゃん じゃあリストのリストを元に戻したら どうやって書くの?
よく見るのは xss な気がする
ネットだとxss/yss派のが多いみたい yys/xxsは xxs = (x:xs) という意味で使ってる人が多いようだ
368 :
363 :2013/09/20(金) 23:14:38.75
ごめん普通はxss, yssだったわ。書くときは間違えないのに変な勘違いしてたな
>>365 よく分からんがこういうこと?
ghci> (1:2:3:[]):(4:5:6:[]):[]
[[1,2,3],[4,5,6]]
>>365 「元に戻す」の意味が分からん。
リストのリストを元に戻すのは分からんが、単なるリストを元に戻すのは分かるのか?
だったら、その例を書いてみてくれ。
そうすれば、あぁそういう意味かと理解し、じゃあリストのリストの場合はこうだ、と
アドバイスできるかも知れん。
一般的にネストの入れ子とりって言うよ。SICPでも嫁
372 :
デフォルトの名無しさん :2013/09/20(金) 23:44:56.73
いきなりSICPとか敷居高すぎますやん・・・ [1,2,3]:[4,5,6]:[]の前が知りたいだけですやん・・・
だから、[1,2,3]:[4,5,6]:[]の前って何やねん
374 :
デフォルトの名無しさん :2013/09/20(金) 23:52:30.91
>>374 なんで括弧無しバージョンを求める?
(1 + 2) * (3 + 4) ≠ 1 + 2 * 3 *4 みたいに、
括弧なくしたら演算の意味が変わると思うが
376 :
デフォルトの名無しさん :2013/09/20(金) 23:58:52.39
処理系もネストの入れ子とりって奴で 糖衣構文のリストのリストを ()付けて戻していくん?
(1:2:3:[]):(4:5:6:[]):[] これ、糖衣構文なの? (1:2:3:[]) と (4:5:6:[]) と [] の3つの項を演算子 : で演算してる普通の式じゃないの?
だから構うなってば
380 :
デフォルトの名無しさん :2013/09/21(土) 00:17:41.94
あ、ごめん自己解決 1:2:3:[] 自体も1:(2:(3:[]))の糖衣構文だから (1:(2:(3:[]))):((4:(5:(6:[]))):[]) これがリストのリストやな
初心者に対しては全力でサポートしてやろうぜ
382 :
デフォルトの名無しさん :2013/09/21(土) 00:20:08.97
SICPポチろうかと諦めかけてたけど 型システム入門に載ってたわ(;´∀`)
>>380 お前の中では 1 + 2 + 3 も (1 + 2) + 3 の糖衣構文なのか?
384 :
デフォルトの名無しさん :2013/09/21(土) 00:24:34.84
糖衣構文ってのはプログラム用語じゃないのか?
中置演算子の優先順位的にも構文糖でも何でもないだろ 意味も知らずに使うなよ
386 :
デフォルトの名無しさん :2013/09/21(土) 00:29:22.03
じゃあきちんとした意味を教えてたもれ
読み書きしやすくするために定義された構文 Haskellでは中置記法でさえ糖衣構文である
中置記法は立派な構文糖 構文の配置変わってるし
海外でオワコンだからしょうがねえわな Haskellは
390 :
デフォルトの名無しさん :2013/09/21(土) 01:02:07.71
(:) ((:) 1 ((:) 2 ((:) 3 []))) ((:) ((:) 4 ((:) 5 ((:) 6 []))) []) 前置で書いたらこうか キチンと書いたら疑問も解けたわ
391 :
デフォルトの名無しさん :2013/09/21(土) 01:06:45.01
あ、でも アレか キチンと書いたら1〜6の数字も []だけで表記できるんだよな
何の疑問だよ 一人遊びしてるようにしか見えないんだが
394 :
デフォルトの名無しさん :2013/09/21(土) 01:25:45.86
いいじゃん Haskellなんて趣味の言語だろ オナニーぐらいさせろって
やっぱり荒らしか
396 :
デフォルトの名無しさん :2013/09/21(土) 01:32:10.73
あ、なるほど どんどん分解していったら car cdr cons atom eqの5つだけになるんやな 謎がどんどん解けて面白いわ
haskellってlisp互換なの?
ブログでどうぞ
オワコンHaskellスレで暴れられてもな
植民地人を便利に使役するためには宗主国の言語が理解できなくては困る。 けれども、宗主国民を知的に凌駕する人間が出てきてはもっと困る。 「文法を教えない。古典を読ませない」というのが、その要請が導く実践的結論である。 教えるのは、「会話」だけ、トピックは「現代の世俗のできごと」だけ。 それが「植民地からの収奪を最大化するための言語教育戦略」の基本である。
401 :
デフォルトの名無しさん :2013/09/21(土) 12:54:44.28
副作用使用罪でタイーホだ
402 :
デフォルトの名無しさん :2013/09/21(土) 13:09:44.63
海外じゃオワコンHaskell
逮捕の上、モナド境界線の向こう側へ追放処分とする
404 :
デフォルトの名無しさん :2013/09/21(土) 13:16:14.19
海外じゃ既にオワコンのHaskell 島国日本で大人気!!
405 :
デフォルトの名無しさん :2013/09/21(土) 14:27:10.26
NHKスペシャルで今日、明日と 神の数式やるけど このスレ見る奴多そうだな この世のすべてを数式で表したい
型情報探したり、副作用無しの恩恵ないんだろうけど やっぱ、ocamlの方が使いやすいのかな? 大体のキラーコンテンツがパーサーや証明定理なんだしocamlに軍配あがるか haskellのocamlに対するアドバンテージって何だろう?
407 :
デフォルトの名無しさん :2013/09/21(土) 15:35:17.70
リスト内包表記
シンプルな文法
409 :
デフォルトの名無しさん :2013/09/21(土) 15:38:59.47
無限リストが簡単に作れる
>>409 表現なら出来るが
作るには無限なメモリが必要です
最小のHTTPサーバのソースコードってないですかね? mightttpやyesodみたいな巨大なヤツじゃなくて hello world 文字列を返すだけに必要なコード片があったらおしえてください
そろそろオワコンスクリプトでも稼動させてやるか オワコンって書かれるとスレが伸びるようだからな
>>410 無限リストを実現するのにどれくらいの量の無駄なメモリを必要とするの?
414 :
413 :2013/09/21(土) 17:58:21.37
>>411 Real Worldにのっていたような
自分で確認してみて
>>415 TCPサーバとUDPサーバはあるけど、HTTPサーバのコード例はない
リクエスト解析とか全部受け持ってくれる関数があれば知りたいのだけど
できれば外部ライブラリのインストールなしでお願いします
waiはreplの後ろで動くから状態が見れるのかいいね
424 :
デフォルトの名無しさん :2013/09/21(土) 23:01:30.39
副作用とは自発的対称性の破れって事だな
インテリゲンチャ気取るな 実践こそがハスケル存亡の要だ
Operationalモナドは何でa→Functor a→Monad aと一足飛びに生んでしまうの 間にいるはずのApplicativeの立場は
やった、Applicativeは要らない子だったんや!
Haskellでメモ化とかどうすればいいんですか? デフォでメモ化されてたりそういうオプションがあったら嬉しいんですけど
副作用のない関数はデフォでメモ化されてるようなもんじゃないの?
>>428 1. まずは「Haskell メモ化」あるいは「Haskell Memoization」でググってみる。
2. ヒットしたページに紹介されている方法をいくつか試してみる。
3. 仕組みを理解する。
どこまでやった?
もし3で躓いているのなら、適切に質問すれば
俺含めてここの連中がよってたかってアドバイスするだろう。
>>429 んなわけあるか。
f x = x * 2
g = f 2 + f 2
たとえこんなシンプルな場合でも、
g の中で f 2 の結果がメモ化されていると「期待してはいけない」。
そんな保証は言語としての Haskell もコンパイラ GHC もしてはいない。
ただ、この程度なら GHC の最適化が働いてメモ化される「かもしれない」が、
繰り返すが「期待してはいけない」。
>>428 こんな感じで書けば良い
x = sum 100
ans = x + x
>>429 そう思っていた時期が私にもありました・・・
ハスケルのメモ化への過度な期待はふつケルのせいで根付いてしまったように思える
俺は期待してる 誰が何と言おうとハスケルのこと信じてる たとえ自分が傷付く結果になるとしても
Rubyだとブロック付きのハッシュを使うとお手軽にメモ化できるんだけど: f = Hash.new { |hash, x| hash[x] = x * 2 } g = f[2] + f[2] Haskellでは、どう書けばいいのだろうか?
>>431 メモ化をなにか別のものと勘違いしていないでしょうか?
そんな感じで書いても決してメモ化はできません。
任意の引数によって関数が評価された際に、その引数と戻り値の対を記憶し、
次に同じ引数を用いて関数が評価される際に、再び戻り値を計算するのではなく、
その記憶させておいた対となる戻り値を返す、このような仕組みがメモ化です。
(どこにどう記憶させ、どう引き出すかによって様々な方法が考えだされている)
こんな感じで書けば良いと紹介されたものは、「任意の」という部分が抜けています。
>>434 4つ前のレス(
>>430 )の前半は読まれましたか?
>>435 このスレは昔と変わらず、初心者には冷たいんですね....
というか、こんな(
>>434 )簡単な例すら1カキコでコードを示せないほど、
Haskellってのは使えない言語なんですか?
>>436 やる気が高くなければ使えない言語です。
他の言語で簡単にできる事でも、同じことをHaskellでやろうとすると、たいていは苦労します。
また残念ながら、遊び半分で中途半端に理解してたらまともに使えない言語でもあります。
なので、メモ化の基礎はここでを訊くよりも、ネット上にある
すでにちゃんしたドキュメントになっているものをじっくり読むことをおすすめします。
初心者であるなら絶対にその方が良いです。
初心者が冷く感じるのは重々承知ですが、仕方ありません。
しかし中途半端に理解して後でこじれて、Haskellは面白くないと逃げられる方が辛いです。
浸透していて本当に使える場合は、ありとあらゆる情報を教える あまり浸透してなくて本当に使える場合は、情報を隠す
雑草記事生え放題の汚染水浸透地区より マサカリで適度に刈りこまれる土地改良区の方が住み良い
>>437 まあ、OA向きに作られた訳じゃなくて目的が違うからね。
実用言語=短期の投資回収が目的。
研究言語=長期の投資回収が目的。
>>441 Haskellは実用を目指して作られた言語だそうです。
短期の投資回収が目的かどうかは知りません。
アメリカの金融会社で、商品構成が多種多様になりすぎて保守・新規開発 に悪影響が出始めたので、Haskellでルール記述して合理化したってのを見た事がある。
ocamlのjane streetでないの?
446 :
デフォルトの名無しさん :2013/09/24(火) 17:40:54.80
ルール記述までなんだろ
>>434 残念ながら、どんな場合でも使えるメモ化方法はHaskellにはない
やり方は大きく分けて二つ
1. あらゆる引数に対応する戻り値を含む遅延データ構造を作る
2. メモ表を状態と捉えて、明示的に更新する
(1)の例
f_memo :: [Int]
f_memo = map (\x -> x * 2) [0..]
f x = f_memo !! x
この例は引数がたまたまInt一つ(で、負の数を無視した)から無限リストにできたけど、
一般の場合にはMemoTrieみたいなのを使う
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/MemoTrie 欠点は、引数の型が(要するに)[Bool]にエンコードできる必要があること
(OrdやHashableでは足りない)
(2)は、具体的にどうやって状態を扱うかによっていろいろ
Stateモナドを使ったり、IORefを使ったり
欠点は、論理的に必要ないのにモナドを使わざるを得ないことと、書くのが面倒なこと
あと
>>437 みたいなのは初心者を遠ざける害悪だから消えれば良い
そもそもだが、初心者はメモ化なんて気にするなと言いたい 初心者を卒業して、自分で興味をもって調べられる力がついてから、 メモ化ってなんだろう、どうやってやるんだろって考えれば良いんだよ 何事も身の丈に合ってた学習が大事 初心者のうちから FRP を理解しようとして結局無駄な遠回りをしてしまったバカからのアドバイスだ
Haskellの初心者が他言語の初心者とは限らない 他言語で当たり前にやってるメモ化をHaskellではどうやるのか、って疑問が湧くのは自然だろ
「メモ化」って「ボスが来た」のことか? 仕事中にGHCiで遊んでちゃいけないでしょ。
:!sl
453 :
449 :2013/09/24(火) 19:51:32.57
>>450 いや、他言語の玄人だろうと、Haskellの初心者ならメモ化なんて気にするなということだ
気にするなと言われても疑問が湧いて気になってしかたないかもしれんが・・・ぐっと我慢だ
Haskellの初心者を抜けだしたら大いに取り組むということで、お楽しみはとっておけ
「Haskellでメモ化ってどうやってやるの?」 に対して返答が 「気にするな」 ってギャグかよ Haskellでのメモ化に特に前提知識が要る訳でもないし、隠す理由がない
本嫁ってのが答えなんとちゃうか?
>>449 ちょっと面白い数学の例なんかをやろうとすると必然的にメモ化が欲しくなるので、メモ化の話はモナドの文脈だろうけど
初心者にも説明されるべきだと思うなぁ。
何故、Haskellのスレでメモ化なんて低水準な話題が出てくるのかわからないな。
Haskellは低水準もこなせる言語だから
それは初耳だ
むしろ低水準でこそ使われるべき
>>457 他の言語のテキストにはTCOが使えないのでメモ化で〜という話が載ってるから
>>454 ちょっと違う
「初心者なんだけど、Haskellでメモ化ってどうやってやるの?」
「気にするな」
これなら特別おかしいという事はないだろ
まぁ、当然反論はあるだろうが、こういう意見もあるだろうなと認めてくれるだろ?
認めるわけねえだろチンカス
無料で教えるのはちょっと…
>>435 あるぇ?
何スレか前にここで
print (sum 1000000)+ sum 1000000)
ってしてもメモ化されないで、2回計算した分の実行時間が掛かるって書き込んだ時に
x = sum 1000000
print (x + x)
ってするように、教わったんだけど・・・
+のまえの”)”は打ち間違えです・・・
ある式が2回評価されないっていうのと、同じ形の式が2回評価されないってのの違い
>>466 バカか
それは 1000000 にしか対応してないだろ
ちなみに
>>431 は 100 にしか対応していない
99 や 1 や -3 や 7 とかにも対応させろよ
でなきゃメモ化してるなんて胸張って言えんだろ
>>469 自分も
f (1+2) (1+2)
とかすれば、自動的に(1+2)の部分をメモ化してくれるのかな?とか思った時期もあったけど、違うっぽいですよ?
あくまで
x = 1 + 2
f x x
とした場合のみ、らしいので、自分の感覚では、手続き型で変数に計算結果を代入してから使うのと同じだなぁ・・・とか思ってる。
結果が数値そのものか、数値を差すポインタかの違いだけで。
あなたの言うメモ化を実現するコードがあったら、私も見たい。覚えたい。使いたい!!
(私もまだまだ未熟なので)
473 :
428 :2013/09/25(水) 07:03:12.82
>>430 たらい回し関数の実装程度を目標に質問してました
それで
memoized_fib :: Int -> Integer
memoized_fib = (map fib [0 ..] !!)
where fib 0 = 0
fib 1 = 1
fib n = memoized_fib (n-2) + memoized_fib (n-1)
っていうのは見つけたんですがなぜこれがメモ化になるのかわかりません
>>447 もしかしてリストを返す関数は一度計算した分は記憶される感じですか?
474 :
428 :2013/09/25(水) 07:09:29.68
s/リストを返す/リストを内部に保持する/
>>470 見るだけでいいのなら、ググって眺めろ
覚えて使うだけでいいのなら、
>>447 でも紹介されている MemoTrie でも使っとけ
使い方は MemoTrie.hs のコードの一番最後にコメントで書かれてる
メモ化の仕組みを理解したいのなら、ググったページを読み、そこで使われているコードについて、
自分でチラシの裏にでも簡約される様子を描いてみる事をすすめる
(面倒でも、できるだけ丁寧に)
で、理解不能な点があれば、ここや、stackoverflow などで質問すればいい
ちなみに、MemoTrie の仕組み(基本アイデア)はここで学べる
http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries まだまだ未熟というのが謙遜ではなく、本当に初心者であることを意味しているのなら、
やっぱりこういうのに手を出すのはちょっと早いような気がするのだが・・・
いや、MemoTrie.hs や他のメモ化の方法を活用するだけなら簡単だけど
>>473 >もしかしてリストを内部に保持する関数は一度計算した分は記憶される感じですか?
まず、リストに限らず同じトップレベル変数の値は一回しか計算されない
v :: Int
v = ...定義...
なら、...定義...の部分の評価はプログラムの実行を通して一回か零回
同様に、
>>447 のf_memoは、各要素が多くて一回しか評価されないからメモ化になってる
>>473 のmemoized_fibはややこしいけど、memoized_fib自体は一回しか評価されないので、
その中のmap fib [0..]というリストも一個しか作られない
ちょっと注意が必要なのは、ラムダの中に書いた式は毎回再計算されても文句が言えないということ
memoized_fibをちょっと変えて
memoized_fib' x = map fib [0..] !! x
と書くと、リストがラムダの中にあるから、GHCのオプションによってはリストが毎回作り直される
>>475 遅延評価を頭に叩き込むという点でむしろ初心者向きの題材だと思う
>>437 おれは
>>447 ではないが、
リストどころか、一度評価されて値になったものは、GC されなければずっとメモリに残る
(評価されなくても、サンクの状態でも残るが)
初めて使用する「変数」が指している先はサンクだ
(サンクは、未評価のコードが格納されているメモリ領域と考えて、とりあえず問題ない)
その変数が評価されると、サンクの評価された部分だけが何かの値に変わる
だから、その変数の2度目以降の使用時には評価済みの値が使われることになる
この「評価された部分だけ」という部分が遅延評価だ
リストは結果的にそれぞれの要素が独立して評価済みだったり未評価だったりにできる
これを踏まえれば、
>>473 のコードは
>>466 (や
>>431 ) のコードと本質的に同じだと分かる
479 :
デフォルトの名無しさん :2013/09/25(水) 08:14:11.57
そもそも静的言語にとってメモ化なんて 重要な事か?
>>466 メモ化と、同じ部分式を繰り返し評価しないためのグラフ簡約などの話は全く別です。
メモ化と遅延評価って別物?
482 :
デフォルトの名無しさん :2013/09/25(水) 18:37:58.22
このスレって2chの中で一番平均偏差値が高い気がする
483 :
437 :2013/09/25(水) 18:37:58.72
>>447 丁寧な説明、ありがとうございました
(1) については、Haskellの遅延データ構造では評価結果が自動的にメモ化されるので、
対象領域に応じた適切なデータ構造を選択すれば(選択できれば?)、
お手軽にメモ化は可能である、ということなんだと理解しました
(2) については、難しいのは Ruby も同じですね
既存のデータ構造では上手くメモ化できない場合、独自のクラス定義やらが必要になります
Haskellについては、無理にモナドを使わずとも、対象領域に適した遅延データ構造を
設計する発想で考えたほうが単純な気がしないでもありません....
484 :
434 :2013/09/25(水) 18:38:48.81
485 :
434 :2013/09/25(水) 18:49:04.20
>>481 別物だけど、遅延評価を使うとメモ化が楽に書ける
たとえば
>>434 のRubuコードだと、先頭行の Hash.new で
ブロック(=ラムダ式)を使って代入式 hash[x] = x * 2 の「評価を遅延(delay)」させ、
その後のハッシュ参照式 f[2] で「評価を強制(force)」している
対象:Platform 2013.2.0.0
環境:Windows2000 SP4
症状:Win32-2.3.0.0モジュールの読み込みに失敗する
現場:
GHCi, version 7.6.3:
http:://www.haskell.org/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>Graphic.Win32.Window.mkClassName "TEST"
Loading package array-0.4.0.1 ... linking ... done.
Loading package deepseq-1.3.0.1 ... linking ... done.
Loading package bytestring-0.10.0.2 ... linking ... done.
Loading package Win32-2.3.0.0 ... linking ... <interactive>: D:\Program Files\Haskell Platform\2013.2.0.0\lib\Win32-2.3.0.0\HSWin32-2.3.0.0.o: unknown symbol `_GetProcessId'
ghc.exe: unable to load package `Win32-2.3.0.0'
Prelude>Help me
Windows2000 ...
Windows2000はサポート外なのか。。。ギギギ
virtual boxからlinuxやな
>>491 これが妥協ラインだなぁ
なんか悔しいわ
出来上がったバイナリも最新コンパイル版に劣ると思うだけでコーディングも身が入らないわぁ
ひょっとしてWin32パッケージバージョン落として入れ直して これに依存する全パッケージも再度ビルドインストールし直したら最新GHC使えるってことすか?
>>493 Windows2000にギガパッチあてることになると思う
beta が、本ちゃんになった Well-Typed and the Industrial Haskell Group (IHG) are very pleased to announce that Hackage 2 is now powering the official Hackage server.
産業ハスケル団が暗躍しているな
497 :
デフォルトの名無しさん :2013/09/28(土) 15:06:03.38
オワコンだしなHaskellは プログラミング言語のランキングにすら乗ってない ゴミだったな(笑) 数年前に始まって一瞬で散ったな(笑) オワコン(笑)(笑)(笑)(笑)
馬鹿には無理なのに、低能が使ってみようと無駄な努力をして 結局まともに書けるようにならず、憎しみだけがHaskellの名と共に記憶に刻みこまれ 掲示板に呪詛を書き込むようになる そんな言語だな
オレニハ ワカラナカッタ コンテンツ 略してオワコンだな
よし・・・誰もいなくなった いまのうちにHaskellは頂いて行く フハーーーハッハッハ!!
〃´⌒ヽ . , -―― メ/_´⌒ヽ / / ̄ ´ヽ ヽ . / , /// ト. ! 、 丶ヽ l / /(((リ从 リノ)) ' | i l . ヽノ .V l l ,=! l /// ///l l ねんがんのHaskellをいただいたぞ! l ヾ! ', l ヽ_フ l l | ヽヽヽ // l ヾ≧ , __ , イ〃 li (´`)l {ニ0ニ}、 |_"____ li /l, l└ タl」/l´ `l リヽ/ l l__ ./ |_________| ,/ L__[]っ / / ::::::::/ ヽ、 :: ::: ::: ::::::::::::::::::::::::::::::::: :::::/ lハ ::: : :: :::::::::: ::::::::::::::::::::::::::::: ::::l l /ノリ ::: : :: ::::::::::: ::::::::::::::::::::::::::::: :::| /) / ::: : :: ::::::::: ::::::::::::::::::::::::::::: ::l /イ/| . :. :. .:: : :: :: :::::::: : :::::::::::::::::: / / ||/ / ̄ ̄ ̄ ̄ ̄7l:::::::::::::::::::: i /_,/i!/ / l:::::::::::::::: l 人 / λ / /:::::::::::::::: l / /⌒ヽ ASKUL / /:::::::::::::::: l /il | ) / /:::::::::::::::: ll l i! `ー、\___ / n/:::::::::::::::: lヽ l |\. \ /⌒〉::::::::::::::::
日本語入出力さえ 日本語入出力さえデフォルトで不自由なく使えれば…
>>502 Windows使い?
それならGHC 7.8でSystem.IOがCJKに対応するはず
日本語はicuとかいうのを使えばいいのか?
windows以外なら何もしなくていいはず windowsでも動いて欲しいならtext-icuだっけ
本当にWindowsってプログラミング界の足を引っ張ってんな
半分は同意するが、all-the-world's-a-UNIX 症候群には与したくないな。
all-the-world's-a-UNIX 症候群には与したくないな
>>507 はやく UTF-8 通るようにしてくれ
とは思う
なんだかんだ言って、unixよりwindowsで開発した方が可搬性が高い件について
haskellの場合は、Windowsのコンソールで使いたい人とWindowsコンソールに詳しい人、開発する気のある人にギャップあるんだろうね。
MSのスタンスは、POSIX系の国際規格には入札に必要な範囲で対応というイメージ
http://support.microsoft.com/kb/93360/en 一時期商用の需要があって有償対応オプション用意してたけど、いまはもうメンテしてないのかな。
clojureclrという.net向けのツールも最初は、mono/linuxのposixコンソールで動か無かった。 scala,clojureもコンソール向けにjlineというreadline対応ライブラリを組み込んでreplが動くようになってるが、 当然windowsのコンソールでは邪魔なので、あとから外したりしてる。
別にWindowsがLinuxに比べて悪いという話じゃなくて、 windowsとposixのAPIが大きく違いすぎて両方に対応するのが面倒という話だろ windows版を積極的に使ってるGHC開発者が少ないのでバグが放置されがちになっている
5年前にWindowsで作ったモノを今のWindows8で動かすより、5年前にLinuxで作ったモノを今のLinuxディストリで動かす方が難しい
そこでゲームプラットフォーム Steam OS の誕生である。
Steamにゲーム開発環境としてHaskellを管理してもらうGreen Light投票マダー?
522 :
デフォルトの名無しさん :2013/09/29(日) 16:33:11.13
エディタで""などを補完してくれるやつありますよね? でも"カーソル"になって文字を打ち込んだ後""から抜けて "あいうえお"カーソル っていうふうにやりたいんですが やれるエデタ知りませんか? Haskellでそういうエディタ使ってるひといたら教えてください
523 :
デフォルトの名無しさん :2013/09/29(日) 16:33:52.38
← →で移動するの大変なので教えてください GUIのemacsやvi以外のやつで教えてください
>>522 np
Thomas Schilling
Anders
Jean-Philippe Bernardy
Masayuki Hatta
Jeff Wheeler
Corey O'Connor
Haskellで制約プログラミングできますか?
526 :
デフォルトの名無しさん :2013/09/29(日) 16:53:15.84
>>524 そんなエディタ無いんですが
真面目に教えてください
>>523 vimとEmacs以外だとSublimeTextを使ってる人を見たことがある
自分では使ってないので詳しいことは知らん
528 :
デフォルトの名無しさん :2013/09/29(日) 17:05:53.39
SublimeTextとか新しいエディタ言わなくていいので 他のやつ教えてください
>>526 >Haskellでそういうエディタ使ってるひと
>>526 仕様通りhaskellで、そういうエディタを使ってそうな人を列挙しましたが何か?
531 :
デフォルトの名無しさん :2013/09/29(日) 17:14:18.89
本当に""とか()とかの移動できるのでしょうか? SublimeTextは""っていれたらどのような動作しますか? "カーソル" 文字を打ち終わって "文字"カーソルにするにはどういうキーやってますか?教えてください
ここまでウザい教えて君はじめて見たな
533 :
デフォルトの名無しさん :2013/09/29(日) 17:17:13.70
動画アップロードしたほうがいいでしょうか? ちょっとどういう動作か教えるために動画アップロードしてきますね
534 :
デフォルトの名無しさん :2013/09/29(日) 17:28:37.73
動画のあげ方がわからないので引き続き教えてください
動画の上げかたすら10分で諦めるくらいなんだから、さっさと人生も諦めたらいいのに
emacsで充分
教えてください notepad++ってやつは前に試しましたがうまくできませんでした
文字を打ち終わるってどうやって判定するの
541 :
428 :2013/09/29(日) 19:51:29.68
>>537 Haskell用エディタのコントリビュータのリストなんだけど
543 :
デフォルトの名無しさん :2013/09/29(日) 21:02:06.38
早く教えてください
いまいち言っていること分からんが、 それvim(viは知らん、emacsも知らん)で出来るぞ。あとスレ違、これ重要。
545 :
デフォルトの名無しさん :2013/09/29(日) 23:13:04.94
あほしかいねえやこのスレ 使えね ゴミオワコン
俺はアンチ関数型派なんだけど
>>545 みたいなのが仲間だと思うと関数型頑張れとしか言いようがない。
アンチ関数型派ってコールバックとかどうやって実装してるのだろうか
import Control.Monad (forever) import Control.Concurrent (forkIO) main = forever $ forkIO (return ())
x あほしかいねえやこのスレ o あほしかいねえやこの板
551 :
デフォルトの名無しさん :2013/09/30(月) 11:21:11.23
Haskellじゃないんですが 皆さんPHP書くときどんなエディタ使ってますか? 教えてください
552 :
デフォルトの名無しさん :2013/09/30(月) 11:23:05.79
Haskellじゃないんですが expressっていうnode.jsやPerlのCGI::Aplicationのフレームワークは MVC型のフレームワークとどうちがうんですか? 私が生まれる前のことなのでイマイチわかりません フレームワークというとMVC型のイメージしかないんですが教えてください
こいつ最高にアホ
試せば済むだろ知恵遅れ
555 :
デフォルトの名無しさん :2013/09/30(月) 11:37:02.83
そんなこといわずに教えてください
556 :
デフォルトの名無しさん :2013/09/30(月) 14:01:11.70
relude> :m + Control.Monad Prelude Control.Monad> let powerset = filterM (const [True, False]) Prelude Control.Monad> powerset [1,2,3] [[1,2,3],[1,2],[1,3],[1],[2,3],[2],[3],[]] これだけでべき集合が書けるhaskellって凄くね? ちょっと感動したんだが
557 :
デフォルトの名無しさん :2013/09/30(月) 14:21:04.90
これをつかって
>>98 これの110円の払い方を考えてみました
[x|x<-powerset[10,100,1000],sum x == 110]
どこまでいけるのか[1..]を増やしていくと
20数個でout of memoryって出るんですけど
haskellでもここらへんが限界?
>>552 私が生まれる前ってexpressができたのは最近だけど?
バカだなお前は
>>553 最高にアホというよりクズ
情報乞食が必死
迷惑をかんがえろ
>>559 いちいち報告すんなカス
561 :
552 :2013/09/30(月) 14:48:28.41
ふざけないで教えてください expressっていうnode.jsやPerlのCGI::Aplicationのフレームワークは MVC型のフレームワークとどうちがうんですか?
真・スルー 何もレスせず本当にスルーする。簡単なようで一番難しい。 偽・スルー みんなにスルーを呼びかける。実はスルーできてない。 予告スルー レスしないと予告してからスルーする。 完全スルー スレに参加すること自体を放棄する。 無理スルー 元の話題がないのに必死でスルーを推奨する。滑稽。 失敗スルー 我慢できずにレスしてしまう。後から「暇だから遊んでやった」などと負け惜しみ。 願いスルー 失敗したレスに対してスルーをお願いする。ある意味3匹目。 激突スルー 話題自体がスルーの話に移行してまう。泥沼状態。 疎開スルー 本スレではスルーできたが、他スレでその話題を出してしまう。見つかると滑稽。 乞食スルー 情報だけもらって雑談はスルーする。 質問スルー 質問をスルーして雑談を続ける。 思い出スルー 攻撃中はスルーして、後日その思い出を語る。 真・自演スルー 議論に負けそうな時、ファビョった後に自演でスルーを呼びかける。 偽・自演スルー 誰も釣られないので、願いスルーのふりをする。狙うは4匹目。 3匹目のスルー 直接的にはスルーしてるが、反応した人に反応してしまう。 4匹目のスルー 3匹目に反応する。以降5匹6匹と続き、激突スルーへ。
>>561 使ってみればいいっていってんだろキチガイ
564 :
デフォルトの名無しさん :2013/09/30(月) 15:20:52.88
>>550 自分があほだということは認識してるようですね
こうやってHaskellスレは壊れていく
Haskellスレが壊れてない時なんてあったんてすか!?
568 :
デフォルトの名無しさん :2013/09/30(月) 18:16:50.69
わけわかりません expressっていうフレームワークはMVCではないのでしょうか? 教えてください
ほんとに外国じゃHaskell廃れてきてるの?
571 :
デフォルトの名無しさん :2013/09/30(月) 19:52:34.62
>>570 検索方法すら知らない奴には縁が無いから心配するな。
573 :
デフォルトの名無しさん :2013/09/30(月) 20:12:14.23
574 :
デフォルトの名無しさん :2013/09/30(月) 20:14:07.39
スペース入ってるせいでリンク扱いされない場合はhttpから&cmpt=qまでコピペしてアドレスバーに張ってくれ。
>>570 廃れてる
何度も聞くなキチガイ
オワコンなんだよ
>>568 ググれカス
だからお前はクズなんだよwww
>>568 こいつはただのキチガイでした
会社でもこんなこときいてるのか?池沼かよ(笑)
っで?expressが知りたいならもっと教えて!っていうことだな(笑)
577 :
デフォルトの名無しさん :2013/09/30(月) 20:30:59.70
どうでもいいので早く教えてほしいです expressってMVCなんでしょうか? express MVCで検索してもでてきません 教えてください スレ違いですみません ですがJavascriptやってる日といたので教えてください
(キチガイの隔離スレ正常に機能中)
perlスレ荒らされたやつがこのウザさをわからせるために Haskellスレにも同じことしてんだろ
言語関係なく何でもいいから荒らしたいのか > 579 >>perlスレ荒らされたやつがこのウザさをわからせるために 普通は荒らしてる本人と考えるだろw
言っとくけど俺をあまりナメないほうがいいよ プログラマー板でコテハンやってるしこのスレ潰すくらいの影響力は持ってるから くだらないことで刺激して後悔しないようにね
たしかにこのスレはスルースキル低い奴が多いがその釣り針はちょっと大きすぎるのではないか(困惑)
584 :
デフォルトの名無しさん :2013/09/30(月) 23:04:53.39
っとわめく無能であった
おーいみてるー?尾崎隆大(笑)
っとわめく無能であった
Haskellスレ壊滅
諸君、議論したまえ
590 :
尾崎隆大 :2013/10/01(火) 06:22:16.96
Freeモナドの前にまずはFix理解しないとダメなのか だれかホモアニメのメタファーで説明してくれないかな
592 :
デフォルトの名無しさん :2013/10/01(火) 12:05:26.78
>>577 ヤフーにまでマルチポストしてんじゃねーよクズ
キチガイかお前は?アスペだなwキチガイw
迷惑なんだよキチガイ
>>593 そいつは真性キチガイ
ム板で暴れまわる池沼
>>577 お前はヤフー知恵遅れとこのスレの趣旨を理解してんのか?
意味わかるか?
ここで質問するなってことだ
またまた荒らしが沸いてる どうにかならんの?
596 :
デフォルトの名無しさん :2013/10/01(火) 12:12:53.33
どうでもいいので早く教えてほしいです 私の質問を春のやめてください expressってMVCなんでしょうか? デザパタってやつなんでしょうか? MVCのほうかになにがあるんでしょうか? expressはなんなんでしょうか?
Microsoftが無償で提供している評価版のIDEのことです。 プログラミングを学ぶのに良い環境なので、是非、Windowsにインストールしましょう(^o^)/~
尾崎隆大(笑)新所沢ライノーズ少年部部長(笑) わざわざ本名出して書き込むやつ(笑)
>>598 俺は野球やっていたがもっと遅く生まれて
新所沢ライノーズ、尾崎隆大監督のもとで野球をやりたかったな
Prologもやってんだろ?プログラム宿題解決してくれるんだろ?
まさに下請けしてくれるドラえもんじゃないか
601 :
デフォルトの名無しさん :2013/10/01(火) 16:02:34.13
荒れまくり・・・ なにがあったんだよHaskell板・・・
940 名無しさん@実況は実況板で [sage] 2013/07/06(土) 18:13:08.33 ID:eTXsr4dg 埼玉 新所沢ライノーズにパワハラコーチがいる。 小学生相手に言葉遣いが酷いです。 この世界ってこういうものなのですか? 一生懸命頑張っている子達に、ヘタクソとか馬鹿野郎とかって普通ですか? 946 名無しさん@実況は実況板で [sage] 2013/07/20(土) 07:24:25.20 ID:4Av9qiS0 それってライノーズのAさんですね? 試合時に審判からも注意されてるの何度か見てますよ。 息子さんが大活躍しているそうで調子に乗っているのか、誰からも注意されないのかって感じでしょうか。
諸君、新所沢ライノーズについて議論したまえ
個人名出してる奴はなんなの? マナー違反じゃないの? 倉りん実つらぬの? 衣食足らぬの? あ、俺尾崎隆大じゃないからね(^ω^;)
605 :
デフォルトの名無しさん :2013/10/01(火) 17:31:43.23
っとなげく池沼であった
機能してないクソスレ オワコンスレ
プログラミング言語のシェアは現在新所沢ライノーズが1位ですが、 このまま新言語が出てくるまで天下でしょうか? 朝鮮でブームが去りつつあるHaskellは今後はどうなんでしょうか? 教えてください みなさんの憶測でもかまいません
>>607 オライリーの犀本はJavaScriptだね。
>>608 お前にきいてませんキチガイはきえろ
>>577 ExpressってやつはDSLらしいです
RubyのsinatraっていうやつもDSLっていうやつらしいです
Sinatra は Rails のようなモデル-ビュー-コントローラ (Model-View-Controller,MVC) フレームワークではない。強いて言うならば,"Ruby を使用して web アプリケーションを作成するためのドメイン固有言語 (domain-specific language)" である。
610 :
デフォルトの名無しさん :2013/10/01(火) 19:32:25.48
>>609 回答ありがとうございました!
DSLって何でしょうか?意味わかりません
PerlのCGI::ApplicationもDSLなのでしょうか?
MVC以外の概念のフレームワークの名前ってどんなのがありますか?
さっさとこのスレ違は消えろよクズwww
612 :
デフォルトの名無しさん :2013/10/01(火) 19:38:26.21
>>611 スルーできない、答えられないお前が消えろ(笑)
そしてHaskellスレは質問君によってつぶされたな(笑)
ム板屈指の糞スレ
HaskellってGHC拡張なしで大規模開発できるの?
できないし、その拡張がずっと使えるという保証もない 実験言語と割り切るしか無い
(;ω;)
>>614 C++もVC++のMFCや.netみたいな拡張ライブラリないとまともに開発出来ないだろ?
将来も使える保証無いだろ?
どの言語も基本同じ。
マイナーな言語はその拡張ライブラリを作って貰えない可能性が高いけど、Haskellはマイナーな言語の中では恵まれてる方だと思う。
>>612 糞スレ以前に機能してないんですけど
荒らされまくって
619 :
デフォルトの名無しさん :2013/10/01(火) 23:25:52.52
っと嘆くクズであった
>>610 ん?だからググろうなクズwww
いちいちここで質問を書くなら
Googleの検索バーに質問内容を打ち込もうwww
それすらわからないクズなんだなw
中学時代のHaskellの授業でインターネットを使った時 みんなが自分の好きな漫画や野球のページを見てる時に 自分だけこれみよがしに2chにつないでAAとかを周りに見せてたこと しかも「このページって何?」って聞かれた時に「ヤバイ奴らの集会所みたいなもん」とか答えたこと さらに友達に2chへの行きかたを教えるためにヤフーで2chって検索させて でてきたリンクをクリックして2chのトップページが表示された瞬間に そいつの耳元で「Welcome to Underground」ってささやいたこと
そこはWelcome to the Dependency Hellにして欲しかった
623 :
デフォルトの名無しさん :2013/10/01(火) 23:46:33.70
教えてくんはちょっと落ち着いた方が良い 自分もHaskellの事はちんぷんかんぷんだと思うが 教える方も実はよく分かってないんだ それぐらい難しい言語なんだよ それを理解してくれよな
624 :
デフォルトの名無しさん :2013/10/01(火) 23:49:33.21
っとなげく要望君であった
>>632 >そこはWelcome to the Dependency Hellにして欲しかった
ん?だったらお前が書き直して貼り付けろや
お前がいちいちレスしたから荒れるんだろ?
迷惑だなお前はモテないし仕事もできない無能っぷりがにじみ出てるぜ?
>>623 っで?wwwwwwwwwwwwwwwwwwwwwww
ちんぷんかんぷんならわかりやすくお前が教えろよwwwwWWWww
いちいちクソ荒らしにレスするなキチガイwww迷惑してんだよwww
お前みたいなクズが嵐に絡むからあれんだ?わかるか?クズwww
わかったらこのスレから消えろチョンwww
>>624 お前もイチイチレスするなクズ
626 :
デフォルトの名無しさん :2013/10/01(火) 23:53:14.89
もうだめだなこのスレ Haskellの話題だすだけで荒れる たすけて
っとわめく他力本願のクズであった
このスレは人多めだよな。 年齢層低めなところは、ほかのソーシャルメディアに移ってる。
厨房はエロ動画漁ったりゲームやってりゃいいのに、なんでこんなスレ荒してる。
630 :
デフォルトの名無しさん :2013/10/02(水) 01:05:34.41
さっさと消えろキチガイ
>>617 Windowsなんて
将来も使われる保証ないだろ?
632 :
デフォルトの名無しさん :2013/10/02(水) 14:55:14.05
そりゃそうじゃ いつでもいつもいつもいつもHaskell崩壊
WindowsがGoogleに潰される日はくるか
634 :
デフォルトの名無しさん :2013/10/02(水) 16:56:14.50
こねえよごみ ご飯がパンにつぶされる日はくるのか みたいな無能な問い クズだな無能
っとわめく無能であった
Googleがつぶさなくても勝手に自滅する
世の中の仕事の9割は、Windowsでも充分な単純事務処理だから、潰れるとしても随分先の事。
638 :
デフォルトの名無しさん :2013/10/02(水) 20:09:58.68
Excelでできない事を考えると頭がおかしくなる
今自分はネットブックを使っている。 買うときには、ネットブックかAndroidタブレットかそこそこ悩んだものだが、 実際問題、Android端末ではGHCiは動かない。
640 :
デフォルトの名無しさん :2013/10/02(水) 21:26:37.48
Haskell使わなければAndroidで充分とも言える。
Haskellはメモリ効率が悪いのでメモリはいくらでも欲しくなるし マルチコアで簡単にスケールするのでCPUもいくらでも欲しくなる
643 :
デフォルトの名無しさん :2013/10/02(水) 21:51:14.12
質問です 育毛剤のめばHaskellができるようになりますか?
ハゲは消えろ
646 :
デフォルトの名無しさん :2013/10/02(水) 21:56:02.29
(ハゲの気持ちがわからないこのスレ) ゲハスレ
/ ̄\ .| | このスレはゲハとは関係なく /\_+_/\ 朝鮮言語Haskell予定です。 |_l | l_| ご利用の皆様には大変ご迷惑を ヽ.|=ロ=|/ おかけしております。 .| | | .|_|_| ハゲ一同 (_|_)
とあるリストがあって let l = [1,2,3] この要素ひとつひとつに対して f :: Int -> IO (Maybe Int) な関数を適用して行き Justが返ればそれ以降の処理を中止する という処理はどう書けばいいんでしょうか? forM l f から最初のJustを取り出す方法だと当然すべて要素に対して f を呼んでしまいます
649 :
デフォルトの名無しさん :2013/10/02(水) 22:45:00.63
っとなげくハゲであった
>>610 まず最初に、MVCはフレームワークではありません。
MVCはパターンです。それもアーキテクチャーパターン(設計パターン)と呼ばれるもので、アプリケーションの全体構成をどのように設計するのか?というものです。
「MVCフレームワーク」と呼ばれるものは、「MVCパターンを実装しやすいフレームワーク」という意味です。
フレームワークを利用したからMVCになるのではなく、あくまでプログラマーの手によってMVCが実装されるのです。
expressは、MVCパターンのうち主にControllerの実装をサポートしてくれます。
Viewについては、別途テンプレートエンジンを用意します。
Modelについては、一切実装されていません。
651 :
デフォルトの名無しさん :2013/10/02(水) 23:45:32.72
>>610 あれはMVCではなく、ルーティングだけ提供するRubyでいうSinatraのようなものだと思ってます。
で、外付けのテンプレートエンジン(デフォルトjade)があるので、Viewも提供しているように見えます。
>>651 知ったかぶりは消えろ
>Sinatraのようなもの
ExpressとSinatraは全くの別物だけどなクズw
>>650 正解
>>651 は知ったかぶりで嘘教えてるので参考にしないように
653 :
デフォルトの名無しさん :2013/10/02(水) 23:54:57.72
答えられないなら答えるな まさにそれですね(震え声)
>>648 まず訊くが、その処理を泥臭く書くことはできる?
泥臭くというのは、ポイントフリーみたいにかっこ良く宣言的に書こうとせず、
if なんかを駆使して手続き的でもいいから、とにかくやりたい処理をそのまま記述できるか。
つまり、引数の l と f を使って、どういう経過を経て最初のJustだけを取り出すか、
その流れが頭に思い描けるかどうか、ということなんだけど。
655 :
デフォルトの名無しさん :2013/10/03(木) 00:43:10.99
>>651 ん?何を言ってんだお前は?
クズみたいな回答してるお前はまじこのスレの恥
さっさと消えろ
ハーWWWWWWWWW
責任もって嘘教えた
>>651 はもうこのスレにこないでください
金輪際PHPをかたるのやめてくださいねw
>>653 震え声?
なにびびってんだ?
ガンガンたたけ
657 :
デフォルトの名無しさん :2013/10/03(木) 00:45:03.54
もういいよ このスレ壊そう
>>653 知った相手に震えるとかカスだな
お前も同等のゴミ
MVCとかいってる情報乞食も同等の雑魚
659 :
デフォルトの名無しさん :2013/10/03(木) 00:46:55.95
やだよ 何一人で決めちゃってんの?
660 :
デフォルトの名無しさん :2013/10/03(木) 00:50:50.66
っとなげくクズでした
661 :
デフォルトの名無しさん :2013/10/03(木) 01:04:05.37
Haskellerの欠点は プライド高い奴が多すぎて チームプレーが出来ない所
っと天才肌の一匹狼に憧れるクズであった
663 :
デフォルトの名無しさん :2013/10/03(木) 01:10:56.97
Haskell初めて数ヶ月たつのですが まだまだ使い慣れていません オーダーは間違っていないと思うんですが 作業終盤にあたって盛り返すことができずやられてしまいます どうすればいいんでしょうか? やっぱりバフはくるのでしょうか? 不安です 朝鮮鯖でプレーしていますが 自分はマイクロ操作に自信があるのですが・・・それでも未だにプラチナ昇格できません 勝つ方法教えてください
664 :
デフォルトの名無しさん :2013/10/03(木) 01:13:45.00
>>663 下手糞noobはきえろ
アインストールしろクズw
何で負けてるのにやるの?Mなの?気持ち悪いよ
>>658 情報乞食ってゆうけど
ここも教えて君ばっかりになっちゃったね(^^;
なんてゆーか荒らしばっかり
まともに会話すらできないもん
もうやめて!!! 前のHaskellスレに戻って!!!
666 :
デフォルトの名無しさん :2013/10/03(木) 01:15:30.02
戻りません
スルー推奨
>>663 開始3分裏小屋からのエジ鎌ラッシュ。これで勝つる
669 :
デフォルトの名無しさん :2013/10/03(木) 02:11:52.87
>>668 おっ こんな所でRoRが出てくるとは思わなんだ
>>654 ありがとうございます
f :: [Int] -> IO [Int]
f (x:xs) = ..
case r of
[] -> f xs
r -> [r]
のように f を再帰で書き直せばできます
rを計算する部分だけを切り出した g :: Int -> Maybe Int を作って takeWhile すればよくね?
672 :
デフォルトの名無しさん :2013/10/03(木) 10:26:44.48
Haskellは結局、かけた時間が最も大事。ただ、時間をかければいいってものではなく、ちゃんと意味のある時間のかけ方をしないとダメ。 密度の濃い時間にするというか。 RPGなんかと違って、たたかうを選んでればレベルが上がるわけではないので
673 :
デフォルトの名無しさん :2013/10/03(木) 10:28:06.01
>>668 >>663 ゲームッカスは消えろ
>>672 Haskellなんてのは有り体に言って戦争なんだから、 場に出してるお互いのカードに文句を言う意味はない。
相手のカードが揃っていないなら虫けらのように潰せばいいだけ。
他にいい方法があればデッキを組み直すだけ。
Haskellの向き不向きってのを見極めるのが難しい。 というかHaskell自体趣味だからエンジョイ勢は一生気持ちよくなれる選択肢をやっていけば良い。 でも勝ちたい奴はそこを我慢して自分という人間と状況に合った選択肢を選ばなければならない。 これはHaskellをする上で明確に意識しなければいけない
っとゲームで例えるクズでした(苦笑)
Haskellってもしかしてファンよりアンチの方が多いんじゃ・・・
>>670 なんでfを書き換える話になってるんだw
>>648 に戻ると、(
>>654 も言ってるように)リストを前から辿る関数を書きたいなら
愚直に再帰で書けばいい
a648 :: (Int -> IO (Maybe Int)) -> [Int] -> IO (Maybe Int)
a648 f [] = (ここを埋める)
a648 f (x:xs) = (ここを埋める)
これができたら、foldrを使って書き直すのは簡単なので好みで
ただし、それ以上かっこよく書くのは標準ライブラリでは無理だと思う
標準に付け加えるとしたら、
newtype MonadicFind m a = MonadicFind (m (Maybe a))
instance (Monad m) => Monoid (MonadicFund m a) where...
とかかな
元はリストの先頭から計算結果を返すものだけ評価したいという話なのに なんでfoldrが出てくるのか理解できないんですけど
679 :
デフォルトの名無しさん :2013/10/03(木) 11:28:08.09
>>663 軸は3つある。
戦闘で勝つこと、欲張ること、相手のワーカーを狩ること。
戦闘で勝つために必要なのは編成とマイクロだ。相手より強い編成を作り、上手く扱えたほうが勝つ。
欲張るために必要なものは、すべてのHaskellが最初から手にしている。
Haskellというのは結局のところ定点防衛力に優れた種族だということである。
Bunkerがある。動けないが序盤に倍のMarineの攻撃を守れる。
Tankがある。シージすると動けないが先にシージしたほうが強い。自陣にいれば先にシージできる。
そうそう攻め切れない。しかしだからといって攻めたら勝てないわけではない。
680 :
デフォルトの名無しさん :2013/10/03(木) 11:28:54.78
>>663 Haskellの考察
ワーカーを狩ればユニットの量が変わってくる。すぐに勝つことはできなくても5分後に勝つことは容易である。
Haskellの防衛力が高いといっても、Haskellの防衛戦力は中々動けないのである。変なところからくるハラスへの対応には手間取りやすい。つまりワーカーを狩る隙がある。
しかし正面からくるユニットにはこの防衛力が多大な働きをする。普通地上からベースへの入り口は一つしかないのだからTankが動けなくても問題はない。
つまり乱暴にいうとハラスで攻めてTankで守るか、欲張ってTankとハラス対策ユニットで守ればいいということである。
もちろん他にもTankを使わずに動きまわるビルドがあったりAirが絡んだりと色々なジャンケンが存在する。重要なのはいかにして編成差を作れるか、内政差を作れるかである。
681 :
663 :2013/10/03(木) 11:29:58.57
参考になりました ありがとうございます
>>678 リストを前から順番に処理する関数は大抵foldrで書ける
Control.Monad.Loopsをつかう
>>682 あの、そういうことじゃないんですよ。
たとえば、sequence の実装は↓のように foldr つかってるんだけど
すべてのmonadicな値を*評価*してしまうんです。
sequence ms = foldr k (return []) ms
where
k m m' = do { x <- m; xs <- m'; return (x:xs) }
>>648 の要求は「条件が合ったら以降のリスト要素を評価したくない」といっていて、
あなたの回答は要件を満たせていませんよと言ってるんです。
685 :
デフォルトの名無しさん :2013/10/03(木) 12:49:57.96
へーhaskellのfoldrって前から処理なんだ
>>684 途中で処理を止めるのも問題なくできるよ
答を書いてしまうと、
a648 :: (Int -> IO (Maybe Int)) -> [Int] -> IO (Maybe Int)
a648 f l = foldr g (return Nothing) l
where
g x next = do
r <- f x
case r of
Nothing -> next
Just v -> return (Just v)
-- てすと
main = a648 f [0..10] >>= print
where
f i = do
print i
return $ if odd i then Just i else Nothing
遅延評価は難しいね〜
私はHaskellを続けるよ
runMaybeT . foldr mplus mzero . map MaybeT
おっと、foldr mplus mzero は msum だったか
691 :
677 :2013/10/03(木) 17:57:12.47
>>689 それ気づかなかったわ
標準ライブラリでかっこよく書けない云々は間違いだった。すまん
(「標準ライブラリ」の定義が曖昧なのは気にしないことにして)
Hackage 見たら MaybeT 二つあったし、標準って感じじゃないよな。 モナドになると気づけば、Hackage にあるのは間違いないから探すだけだった。
transformersはHaskell Platformに入ってるからある意味標準と言って良いと思う (Haskell2010にはないから、その意味では標準じゃない)
>>676 そりゃあんだけ型が合わないだのなんだのコンパイラに突っぱねられれば怨みも持つさ
インテリにいびられるストレスと似たものを感じるからね
これを克服するには自分もインテリ気質にならざるを得ない
ちょっと教えて欲しいんだけど ・遅延評価のメリット ・Haskellで書けるプログラムの範囲 この2点が様々なブログを読んでも抽象的にしか書いてないんだけど この辺ちゃんと説明してくだちぃ
>>695 正直、真面目に答えて欲しいのなら真面目に訊いてこい、と言いたい。
それはそれとして、抽象的なのがちゃんとしていないというのなら、
具体例を挙げればいいのか?
・遅延評価のメリット
素直に計算式を書くだけで、余計な計算をしない処理をしてくれる。
例えば画像処理で、画像に回転を施してからトリミングするとする。
Haskell ならこの通りに素直に (trim . rotate) という関数を画像に適用すれば、
トリミングで失われる画素の回転処理は自動的に省かれる。
・Haskellで書けるプログラムの範囲
質問の意図が分からん。
この範囲までだよと言ったら、君はそれ以上の可能性は一切排除してしまうのか?
逆に訊きたいが、Java や C や Python などで書けるプログラムの範囲などはどうなんだ?
むしろHaskell以外の言語は書けるプログラムの範囲を具体的に定めているのかと聞きたい
みんなHaskellを特別視してる クラス委員長のように取っ付きにくいと思って攻め倦ねてる
>・遅延評価のメリット たらい回し関数なんかの場合の遅延評価の恩恵は、別にHaskellである必要はなく、 クロージャを備えた言語ならどれでもできる Haskellならではといえば、ループをリスト処理に簡単に落とし込めるということかな 逐次IO処理をリスト処理で行えるのは思考とコードの節約にもなり、高アドバンテージ >・Haskellで書けるプログラムの範囲 チューリング完全な以上、どの高級言語も同じ範囲に収まっている 対象の分野に対して記述しやすく実行効率の良い言語を選ぶしかない なんでもかんでもHaskellで書こうというのは我慢フェチの変態オナニー
>>698 それです
>>699 あー、すごいわかりやすい、やはり言語ごとの得手不得手で使い分けですね
逐次IO処理ってForeachループ内の処理を共通メソッド化できるって考えですかね?
だとしたら無名関数便利だからJavascriptやラムダ式が便利ってのと何が違うんですかね
もちろん言語は適材適所で使い分けなんだけど、 Haskellに関しては得手不得手がそこまではっきりしてないので、 「なんでもかんでもHaskellで書こう」という奴が多いように見えるかも 個人的には、「PCで動くプログラムはOSとゲーム以外全部Haskellで書く」 くらいの選択はおかしくないと思う
俺
>>696 の意見はスルーか
何度やられても、この寂しさには慣れん・・・
>>702 態度が説教臭い上に挙げてる例が非現実的だからだろ
ピクセル単位で評価を遅延してたらオーバーヘッドがきつ過ぎで使いものにならん
構って欲しいならセックスでも配信してりゃいいんじゃね
遅延評価の利点ってそんなにないと思う
強いて挙げるなら
>>699 の言ってる遅延リストとか、あとはDSLで再帰的な定義が書けるとか
後者の例は、たとえば文字列から式を読むパーサを書く場合、
parseExpr :: Parser Expr
parseExpr = (IntE <$> parseInt) <|> (string "(" <* parseExpr *> string ")") <|> ...
みたいに(細部は適当)書きたいんだけど、
遅延評価でなければparseExprが無限再帰を起こす
なるべくimmutableなデータを使うことで プログラムの見通しが良くなるのが関数型のメリットなんだけど 例えばリストがimmutableだと、mapを実装するときに正格評価では 末尾再帰にしないとスタックオーバーフローする可能性があるし、 末尾再帰にすると最後にreverseが必要な実装になっちゃうんだよね でも遅延評価だとそれが無いのがメリット
デフォルトで遅延評価でないような実装(eager haskell)でも遅延評価を扱う仕組みは用意されているんだろうな
>>703 Repa でピクセル単位で画像処理しているのだが
708 :
デフォルトの名無しさん :2013/10/04(金) 12:43:59.63
>702 :デフォルトの名無しさん:2013/10/04(金) 07:28:19.50
>俺
>>696 の意見はスルーか
>何度やられても、この寂しさには慣れん・・・
こういうクズにはクズのレスの1個前、1個後にレスつけて
クズがスルーされてる感を出すのが効くんだよなぁww
クズの書き込みIDが696だったら すぐさま自作自演で695と697へアンカw
それにはさまれたクズの書き込みはアンカがついてないのでスルーされている(笑)
これがめちゃくちゃ効く(笑)
>>708 何でそんな心に響く書き込みできるの?
何で?
>>702 あなたのようなレス乞食は社会から必要とされてない
お亡くなりください
>>708 それやるとそいつの書き込みだけ惨めに見えますね
711 :
デフォルトの名無しさん :2013/10/04(金) 12:48:44.30
>>708 四面楚歌スルーと命名しよう
サンドイッチスルーでもいいですね
いじめスルーですか?
もっといい名前ありますか?
孤立スルー
今日からLeksahでハスケります よろしくお願いしますm(_ _)m
713 :
700 :2013/10/04(金) 13:51:04.75
714 :
デフォルトの名無しさん :2013/10/04(金) 14:06:00.44
>>711 他にネーミングないか?
>>710 だなレス乞食みたいなクズはこのスレにいらない
早急西ねってかんじだな
715 :
デフォルトの名無しさん :2013/10/04(金) 14:08:21.33
>>711 ん?いじめでよくねw
>>714 まあそうカッカするな
コリアンかもしれないしな
スンドウゥブはうまいけどコリアンハスカーはいただけないぜ
このスレ機能してねーじゃん どうしたんだよ
ブッコワレケル!!
(a, b, c, d) <- (,,,) <$> newIORef [] <*> newIORef [] <*> newIORef [] <*> newIORef [] これって fold と replicate 4 (new IORef []) で書ける?
>>707 Repa って並列で実行とかじゃないの?
ピクセル単位で遅延って感じになるの?
そもそも trim . rotate の遅延って怪しいけど
Amazonで Haskell で洋書検索したらアダルト商品ばっかりで吹いた
>>722 いや・・・出た事無いけど・・・。
普段から検索してる物で検索結果が変わったりするんだろうか・・・
女だ!2chに女が出たぞー!焼き払えー!
どうやら Spencer Haskell さんというエロ小説家がいるようだ
ファイルのMD5ハッシュ値を取り扱うライブラリを推薦してください
>>719 [a,b,c,d] <- replicateM 4 (newIORef [])
-- Control.Monadのソースから
replicateM n x = sequence (replicate n x)
sequence ms = foldr k (return []) ms
where k m m' = do { x <- m; xs <- m'; return (x:xs) }
>>724 普段エロばかり検索してるんだからもう
…というわけではなくソート順を「出版年数が新しい順番」にすればうちでもなるよ
>>728 ありがとう
確かにタプルに拘る理由は無かった
すごいH
はっかったっのっ
PHPとかWEBプログラミングやってる人スカイプしてくれ 色々教えてくれ treesnake2ですじゃあよろしく
教えがいがありますね
737 :
デフォルトの名無しさん :2013/10/06(日) 17:43:34.02
>>733 ん?いちいちここで募集するな
わかったか
LINEで募集かけてこいやキチガイ
738 :
デフォルトの名無しさん :2013/10/06(日) 17:46:01.69
駅員「乗車券とかはお餅ですか?」 733「いえ、ちがいます」 駅員「いや、ちがうじゃなくて、お餅じゃないんですか?」 ぼく「酢イカはあるけどお餅じゃないです」 駅員「お餅の酢イカは残高不足ですが、 お金があればお餅の酢イカにチャージできますよ」 733「すっぱそうですね」 駅員「お金はお餅ですか?」 733「ちがいます」 駅員「えっ」 733「えっ」 駅員「はぁ?お金もお餅じゃないのですか?」 733「あたりまえじゃないですか」 駅員「ちょっとこい」
ぼく「酢イカはあるけどお餅じゃないです」 これ何なの?
酢イカ is not equal お餅
is not equal toな
doesn't equal
そういうことじゃなくて、 ぼく「酢イカはあるけどお餅じゃないです」 これだけ取ってつけた感じでわざとらしい 言い回しも変だし この「ぼく」は何を勘違いしたらこのセリフが自然に出てくる?
気にするな Haskellできない奴が頑張って作ったんだ なぜここに貼ったのかわからないし 元ネタのコピペに全然追いつけてないけど それでも誰かが頑張って作ったものではあるんだ
move743 :: ICOCA a -> ICOCA a
748 :
デフォルトの名無しさん :2013/10/07(月) 12:07:38.58
ここがcamlspotterさんの会社?
きゃみば様はスタンダードチャターズ 鶴はmaoeさんとあと一人は忘れた
スタンダードチャータード
>>747 華やかそうでええのう・・・。
というか、優秀な外国人がどこでも出来る仕事をわざわざ日本にきて
やってることに驚いたw
Haskellって実社会で役に立ってんの?
さぁね (・∀・)ニヤニヤ
2+2=5
スレが水虫になった気分
実社会で役に立ってるのは体育会系のリーマンだけです
ここでいう実社会ってRealWorldのことですか?
--enable-executable-profiling と -p とにはどのような関わりがありますか?
いろいろツッコミどころはあるけど とりあえずNikki and the Robotsを挙げろや
761 :
デフォルトの名無しさん :2013/10/08(火) 20:52:58.99
>>759 上の2つはグラボのパワー使ってるの知らないのかな。
Haskellの皆さんにお聞きします 株を買おうと思うんですが ここヤバいよ!っていう株教えてください
ミクシィとかグリーなんかが順調にヤバいよ
社会インフラのコードの「ソースコード」のほとんどがアセンブラな件
なにそれ、怖い 金融とかトレーディングとか?
道路の信号と鉄道とATM 飛行機はアセンブラ埋め込んだ高級言語 今で言うDSL
超・高信頼性が要求される仕事では、技術者の確保が難しい言語や仕様自体にバグがある言語や成長の途中であると公言するような言語は使えない となると、Cかアセンブラだけというオチ COBOLももう怪しい
Haskellで遊んでみたいけど探してもまったく案件ないんだよな
>>768 Haskellで言語コンバータ作ればいいじゃん。
> くやしいのうw そうやって"できない理由"を探して永久に慰め続けろよ。 自分の成果で語れよw
Haskellってこんなもんなんだ
775 :
デフォルトの名無しさん :2013/10/09(水) 14:59:11.53
なんのネタ
776 :
デフォルトの名無しさん :2013/10/09(水) 16:34:14.89
限界がある時点でゴミ
あの、チューリングマシン っていうのは…… えっと……
つまりさ、フレームワーク無しで一からフルスクラッチできるPGなんて日本にどれだけいるのっと
フルスクラッチで何作るのさ?
1/1スケールのすごいぞうさん(日本版)
実用とか気にし過ぎ おもちゃとしてもっと気楽に楽しくハスケればいいのに
>>777 チューリングマシンが〜ってのは、人間がコーディングするという前提を無視した空想上のお話
オカルト
>>770 体育会系根性論でGPU有無の差をぶちやぶれると思ってる脳筋はどっかいけよ。
っとわめくモヤシでした
>>783 現実社会では、体育会系がコネと元気と礼儀正しさでGPU有無の差をぶちやぶっています
GPU で Haskell 作ればいいんじゃね
788 :
デフォルトの名無しさん :2013/10/10(木) 01:27:52.73
java詳しい人いますか? いたら至急連絡先教えてください
789 :
デフォルトの名無しさん :2013/10/10(木) 01:34:42.22
教えて君は帰れキチガイ
>>787 無限のテープを持つことが可能なチューリングマシンモデルに限界がなくても、有限の資産と有限の時間で人間がプログラミングするという現実世界では限界がある
テープの1文字100円で会社の社長が首つらない範囲という条件をつければ、チューリングマシンはC言語のコンパイルすら実現不可能
791 :
デフォルトの名無しさん :2013/10/10(木) 04:21:44.46
テープの1文字0円という条件では会社の社長はどうなるのでしょうか?
safeハスケルって7.2.1から導入された規格はアンセーフ関数フリーの表明ですか?
無限のテープを持つことが可能なチューリングマシンモデルに限界はない(キリッ)
>>790 ,794
なんか一見分かったようなこと言ってるけど意味不明
このスレはそんなんばっかだから
最近バカが暴れてるだけだろ。しばらく放置。
バカコンプだから知的層を演じるバカが797
自己紹介乙
x86のMMUもチューリング完全だから限界がないね!
衒学的虚レスはいいから実のある話をしろ
チューリング完全ってのは計算手順の表現能力の話であって、 それを具体的な処理系でどういう処理を行うかってのはチューリング完全とは全く関係ない話なんだが 簡単に言えば「手順書」の内容についてはあらゆるプログラミング言語が同等な表現力を持っているが、 手順書を受け取って処理を行う側(処理系)についてはチューリング完全とは関係ない
誰もチューリング完全の話なんてしてないのに唐突に何いってんだこいつ
802の優勝
>>759 一連の流れをつくった書き込み 60点
>>762 30点
>>770 続きそうにない話を引っ張る この頑張りが後につながる 75点
>>776 60点
>>777 この書き込みが住人に火をつけた 85点
>>802 書き込む内容、タイミング、もっともらしい話し方
全てにおいて素晴らしい 100点
実行速度や開発効率や周辺ライブラリの整備状況やゲーム用フレームワークの話にならず チューリングマシンどうこう言い出すのがこのスレらしいわ
>実行速度や開発効率や周辺ライブラリの整備状況やゲーム用フレームワークの話にならず 全部まとめて限界があるものはゴミ、で片付けられたから……(震え)
ドカタ向けの話題と専門家向けの話題があるからね
>>802 その同等さを保証するために、無限のテープという前提が必要
ひとり「無限のテープ」に拘ってる香具師がいるみたいだけど まったく的外れな持ち出し方をするからすぐに分かるな
>>811 チューリングマシンモデルからみた言語の同値性ではなく、表面に見える文法にこだわらなければならない理由が、そこにあるから
正しいことを言ってるつもりなのかもしれないが致命的に話の流れが見えてない お薬出しておきますね
環境は、人間という機械に文法を定着させることまでを含む 演算には現実社会の資源が必要であり、その資源は有限である 演算には時間が必要であり、コーディングと実行を終了するまでに与えられる時間は有限である 問題を解くのに必要な資源と時間があることは保証されていない 言語が受理できる問題のクラスは、既存のコンピュータ言語間で明らかに異なる
俺のPCはノイマン型コンピュータだしwwwwwwwwwwwwwwwwwwwwwwwww チューリングマシンとかだせえwwwwwwwwwwwwwwwwwwww
Data.Text ライブラリのビルド時間かかりすぎワロタwwwwwww 41工程が半日経っても済んでないwwwwwwww
suffix arrayをhaskellで自作する場合どんな手段がありますか? モナドに浸さない感じでお願いしますm(_ _)m
チューリング完全かどうかなんて、プログラミング言語として最低限の条件は満たしましたyoという話で、自慢にもなんにもならない。
チューリング完全を”実用的な”プログラミングの必要十分条件と誤解している人が多いね 単に必要条件の一つに過ぎないのに
>>819 必要条件ということはチューリング完全でなければ実用的なプログラミングはできないということ?
チューリング不完全な言語だと実用的なプログラミングする上で何がまずい?
>>822 チューリング完全は実はものすごく規模が大きい
計算可能性が問題になる場面以外では問題にする必要はない
>>824 suffixArray :: [a] -> [[a]]
suffixArray xs = map (\ i -> drop i xs) [0..(length xs) - 1]
これでどやろか。
sort . tails とのちがいをくわしく
>>825 どうもありがとう。でもリストって遅くないですか?(´・ω・`)
hsファイル一つで動く感じがよかったんですけど大人しくライブラリを探しますネ(´・ω・`)
haskellの連結リストは遅延評価のおかげか思ったより速い
遅延評価のおかげで処理を省略できるような場合以外は普通に遅いよ
普通は正格版のVector使うわな
Textライブラリのビルドまだ終わってないワラタww
haskellが得意だと言ったら、「こいつ、できる…」という尊敬の眼差しで接されるようになった
素人っぽいしょぼいフリーウェアばかりとはいえ、 アプリが出てきたってのは関数型言語としては画期的だな。
Darcsは玄人のフリーウェアアプリかな
今更ながら気づいた Haskellってスクリプト言語としてもけっこう使えるね
むしろ、スクリプト言語としてしか使えない
gtk とか qt とかに依存しない、 xlib だけを使ったような GUI がほしい。 見た目 simple で、立体感とかいらないから。 できたら、reactive で、日本語対応で… ちょっとバージョン変わると、コンパイル通らないとか、めんどい。 Python の tkinter よりか、ちょっと、かっこいい感じがいいな
仕事まったくないけどみんな趣味でやってんの?
Textライブラリのビルドやっと38/41まできたワラタwwww プロセスの9割はガベコレしてるっぽいwwwwww
Textライブラリとか雑魚だろ qt-haskellをドキュメント作成enableでcabal installしたら600とかいくしメモリ使用量も6G超える
Haskellってフリーソフト作成には全く使われないし、学術計算でも他の言語が幅を利かせているし CASLみたいに議論のための言語ってイメージしかない。
>>843 研究や実験結果が他言語に生かされているということで、
その議論が役立ってるのだから、もうそれで十分実用だよ。
フリーソフト作成とか商用アプリとかで使われるなんてのは、単なる余興だ。
>>845 >研究や実験結果が他言語に生かされている
・・・長期の投資
>フリーソフト作成とか商用アプリとかで使われる
・・・短期の投資
長期・短期が互いに貢献しあう利用法を出来る組織が伸びる。
Haskellを研究用言語だと思いたがってる奴がいるな
>>847 むしろ、ガチガチの研究学術用言語として位置付けて、実用に妥協した仕様変更をしないでほしいです
どのへんが妥協してると思うのか述べよ
>>848 それは無理、もともと実用を目指して作られた言語だ。
今もその流れは止まっていないし、「しないでほしいです」なんて
理由も根拠も示さない個人の感情で止められるわけがない。
Haskellは諦めて他のガチガチの研究学術用言語とやらを探すか、自分で作ってくれ。
もし自分で作り直すなら、実用に走った部分を削除して、Haskell- を作ってほしい lispに対するschemeみたいな感じで MLやmirandaよりもhaskellのスタイルの方が好きなので
Haskellのインデントスタイルが微妙にわからない Pythonみたいにガチガチでもなくセミコロンとかで区切るでもなくて
>>854 ・do, of, where, letの四つの予約語が特別扱いされてる
・上記の予約語の後が{でない場合、インデントに従って{;}が補われる
の二点を押さえれば分かり易いと思う
C++ H--
ハスケナイとか
>>851 seqがあるせいで理論的に汚くなってる(パラメトリシティが制限されるとか)ってのは分かるけど、
THが何か問題起こしてるか?
>>858 論文に書くときに、数理的に上手に記述できない
(記述しようとすると、コード生成コードなので抽象度が上がって、論文上の見た目とコード上の見た目が大きく異なってしまう)
なんかずっとROMってたけど、どっちみち国内じゃ大学や企業の研究室でしかお金にならないっぽいね やっぱそれが関数言語の限界なのかなー
ドカタには敷居が高いからねー
お金にならないんじゃ広まらないでしょ、フランス語みたいにエグゼクティブな人達だけで楽しみたいんなら先は見えてるよね
Haskell使ってる、高額年棒が欲しいなら、英語もできた方がいい。
Scalaに関してはTwitterとか大手でバックエンドに採用される例も散見されるが、 これはJavaの資産が使えるのが評価されて選ばれてるだけだろうし。 今後関数型言語が流行ったとしても主に使われるのはScalaやF#で、 LispやHaskellが流行ることはないだろうな。
GitHubがRuby捨ててC#ですからな 敷居の低さってなにも技術的なことだけじゃなくて、それを覚える学習コストをペイできるのかって話でもあると思うんだよ
(あれは釣りというかガセです)
IT速報ソースで語っちゃうおとこのひとって…
日本はソフトウェア開発のレベルが低いから。
ユーザーのレベルも低い
まあ、Haskell程度すら使いこなせず こんなスレで愚痴をこぼす低能ですからね
emacs の haskell-mode を入れ替えようと思ったら、git使ってコンパイルする形になってた どこかにコンパイル済みのhaskell-modeないですかね?
結局今ハスケル勉強する意味ってなにがあるの? ハスケルでないと出来ないことってあるの?
身構えて勉強しないとプログラミング言語一つ使えない低能は 最初から対象外なんですよね……
>>872 アクティブな奴はとっくに手を動かしてる。
万人向けの答えをここで聞こうとする者には不要だから心配するな。
レベルが低いんじゃなくてNTT Dataを頂点としたIT派遣の搾取モデルを破壊しないとスタートアップなんて産まれないんだよ 才能あっても金がないんじゃどうしようもないだろ、MixiやGREEなんかがドヤ顔してた or してる時点で国内のソフトウェア産業なんて高が知れるんだよ
>>875 昔、関数型言語が流行ったときにMLでテキスト作っちゃったから、そのままMLで教えてるのが現状
教員の方にHaskellを教えるのがメンドい
>>876 無料で複製できる
下層とトップで個人の生産効率が1000倍以上違う
こんなおかしな産業で、他の産業と同じ円で報酬を払ってること自体に問題がある
雇用モデルを議論する以前の問題
昔みたいにソフトをハードとセット販売するモデルはそれなりに合理性があった
>>878 天才と言われてた登雄大は1日1万行書けるらしいが、BtoCにおけるソフトウェアで重要なのはアイデアであってそういうことじゃないだろ
国内で資本が集まるのって何故かソーシャルみたいな詐欺みたいなのばっかじゃん
国内の投資家のITリテラシーが低過ぎるんだよ、ソフトウェアの価値がわかんない奴等が日本からGoogleやFacebookが産まれないってアホかと
銀行含めて金貸さな過ぎるんだよ
>>878 >無料で複製できる
>下層とトップで個人の生産効率が1000倍以上違う
昔からある文筆業と大して変わらないと思う。
>>879 短期的に収益が見込めるモノには安心して投資できる。
でも、投資家の問題ではなくプログラマの”アイデアと実行力”
が足りないことが日本のIT産業の弱さだと思う。
ちなみにFacebookを認めるなら、mixiやソーシャルゲームも
認めてあげないと不公平だと思う。
Googleは後発組で、それ以前は国産サーチエンジンもあった。
でも、性能悪いからGoogleに駆逐された。
資金より、技術力の問題だったと思う。
Haskell って、いつのまに次のような書き方できるようになった? 昔からできたっけ? if a then b else c とか if a then b else c とか if a then b else c とか
というか、こんなのできないようになってた理由の方が気になるわ なんか問題でもあったんかな
>>884 do
x <- foo
if x then b
else c
原則に従ってセミコロンを補うと、
do { x <- foo; if x then b; else c }
になるので、if式が二つの文に分断されてパースエラーになる
>>877 SMLofNJだった
再帰思考の洗礼を受け、手続き脳だった俺はカルチャーショックに打ちのめされた
牙がもがれたようで糞ツマランかった
関数型は絵空事だと思った
現実のパフォーマンスの方を向いていない
簡易言語コンパイラを作る実習だった
無味乾燥な作業のようで全く興味もてなかった
単位落とした
卒業後Haskellに出会った
現実と向き合ってるHaskellを見て、酸っぱい葡萄理論を展開して逃げていただけの自分が恥ずかしくなった
だから俺も関数型とまた向き合おうと思った
その時からもう関数型はレストランのパセリや、酢豚のパイナップルじゃなくなったんだ
初めから出会えていればあの時再履修なんてせずに済んだんだ
当時教材にHaskellを選ばなかった教員が憎い
偽物でやる気なんか出るわけないんだから
いやもう人を憎むのはよそう
Haskellに出逢えたんだから
憎むのはSMLofNJだけでいい
酢豚のパイナップルはおいしいだろ! いい加減にしろ
授業で教えるのはSMLでいいけど、Haskell、Ocaml、Scala、F#紹介するといいよね!
>>888 実用が教育用という意味なら、MLは1990年代に揃った
数値計算か記号処理で従来の言語よりもメリットがあることを示せないと、授業で教えるのは難しい 大学学部レベルでは、Haskellはまだプログラミングのためのプログラミング言語の域を出ていない
Textライブラリやっと最終工程入ったワラタwwwwww これからプロファイル版でもう一周あるかと思うとワラタwwwwwww
プログラミングの本は1000ページを超えないと 大著って気がしない
デキる漢はプラットフォームでなくコンパイラアップデートの度に入れ直して 必要なライブラリキャバッてるの?
>>894 64bitコンパイラ使いたかったら、現状それしか無い訳で・・・
ライブラリ入れ直しはどうにかして欲しいよな 最新GHCダウンロード後に、自分の使用頻度の高いライブラリから 順次バックグラウンドで自動リコンパイルするくらいの優しさは欲しい
これHaskellで作られてるゲームらしいけど なにやってるのかわからん 「Slaves to Armok」 www.youtube.com/watch?v=pfaz8tD4HSo
自作モナドを作っている人いる?
>>896 gentooにはそれやってくれるプログラムがある(使用頻度までは見ないけど)
他のプラットフォームにもあるかも
901 :
デフォルトの名無しさん :2013/10/15(火) 21:19:45.13
こんなところでSML/NJの話題が出るとは嬉しい
ghciで let a = map (+1) [0,undefined] let b = map (+1) a b [2,*** Exception: Prelude.undefined リストから値を取り出すのも遅延されて一回になるんでしょうか
904 :
903 :2013/10/16(水) 03:54:46.01
頭から中身を評価するだけか
905 :
903 :2013/10/16(水) 04:36:15.34
reverse $ reverse [1..10000000000000000000000000000] printが評価済みの部分を表示するだけか ありがとうございました
906 :
903 :2013/10/16(水) 04:48:31.43
やっぱり最適化でなんとかなる ghciやrunhaskellでは最適化されないのか ghcすげえ foldとmapの合成でも最適化されるのかなぁ?されるといいなぁ
>>906 マジカよインタプリタとリリースで挙動違うとか困る
>>903-906 いったい何の話をしてるんだ
最適化の有無で本当に挙動が変わるならGHCのバグかも
何を言っているのか意味が分からん take 3 $ reverse $ reverse [1..] これは ghci だろうが ghc -O2 だろうが実行時に固まるんだが、 そういうことではなくて?
910 :
909 :2013/10/16(水) 07:47:46.00
ちなみに、次のような RULES プラグマを書いておけば、 最適化コンパイル時に、2回続けた reverse は無かったことにできる {-# RULES "double reverse" forall xs. reverse (reverse xs) = xs #-} {-# RULES "double reverse $" forall xs. reverse $ reverse xs = xs #-} {-# RULES "double reverse ." reverse . reverse = id #-} この場合いちいち複数のケースを書いておかなければいけないのが面倒だが
911 :
909 :2013/10/16(水) 07:52:18.62
>>910 あぁ、これでも2回続けた reverse が2つの関数にまたがってると最適化されんな
すまん、俺の方がスレ汚した、無視してくれ
>>910 これ結局人間が気付かないといけないんだよなぁ
コンパイラが気付いてくれないのかなぁ
そもそも有限要素列の逆順の逆順は元の列だってことは証命しないといけないことなのかなぁ
自動証命マシンがあればなぁ
PS ハスケルは有限要素列と無限要素列との判別はできないのかなぁ
キャントかなぁダズントかなぁ
それが判定できたら、停止判定問題も解けちゃうだろ
>>912 やったことはないから確かなことは言えないが、reverse などの関数をモナドにして、
直接引数のリストを逆順にしたリストを返すのではなく、
「そのような計算をするものだという情報」(手続き情報?)だけを返すようにする。
そういうモナドを繋げて、最後に run する関数を適用することで実際の計算をするようにする。
その run 関数の中で、様々な最適化が施される。
reverse と reverse が繋がっていたら id に変えるとか。
こういうともできるんじゃないかな。
なんか repa が内部で似たようなことをやってたんじゃないか。
あちらはストリームフュージョンを施すためだったと思うけど。
メタプログラミングかぁ 計算を計算するのかぁ 諸葛亮の領域だなぁ
>>912 Haskellだとreverse . reverseはidとは違う関数だよ
例えば無限リストを入力したときの挙動が違う
>>916 メタプログラミングで
Aspect 要素列
if サイズが有限 then id に一致 else…
みたいになるのかなぁ
>>917 サイズが有限かどうかを判定する関数がそもそも書けないってことだと思うけど。
Haskellのリストは評価しないと終端か否かが分からんからね
>>918 ソースコード解析すればいけるんと違うの?
無理な事が数学的に証明されているのでございます
無理は承知で、そこをなんとか
任意の入力に対しては無理なことは証明されてるけど、特定の入力について一切判定出来ないって意味じゃない
ソースコード解析して 静的に ..] 動的にしか判らない 場合は無理として …9,10] みたいに静的に有限だと突き止めた場合適用できるようにしてみる価値はあるのではないか
どう突き止めるかにもよるけど、そこまで分かってるならreverseが何個だろうがコンパイル時に適用すればいいだけだと思うよ
>>924 現代的なIDEなら大抵はやってることだね
リストが有限が無限かを判定しようとするIDE?
リストが終端に達したならば有限。 無限の場合は無限ループ。
それは実行時の話でなくて?
IDEのバッファが有限
Data.MonoidのDualってnewtypeであってクラスじゃなくね?
反対の反対は賛成なのだー(duality)
>>932 ごめん自分で Dual class 書いてたの勘違いした
duality ... 双対性(そうついせい)
SASのような分析言語はMLになるの?
高レベルGUIライブラリならGrapefruitがナウいって聞いてサンプル見てみたが、
プログラムの意味がさっぱり分からんかった。
なんかArrowを使ってFRPがどうのこうのしてるってのは聞いたが、
ArrowとかFRPを理解していないと使えないライブラリなの、これは?
http://www.haskell.org/haskellwiki/Grapefruit ここのにも何の解説もないし。
これどうやって使うの?
他の高レベルGUIライブラリもこんな感じなのかな。
高レベルであろうが、仕様が変わるとすぐに使えなくなるようなAPIはやめてほしいです SOEも使えないの多くなってるし Stateモナドですらコンストラクタが使えなくなってるし
State $ \i -> ((i+1), i) はどう書くように変更されたのでしょうか
>>939 state $ \i -> (i+1, i)
943 :
937 :2013/10/20(日) 20:48:22.74
NURBSモデラの内部の仕組みをHaskellでラフに設計してみたから、
それが上手く行ってるかどうか簡単なGUIを組み立てて実験してみたかっただけなんだ。
いずれはGUIもちゃんと学ぶつもりだったけど、今は軽く実験する程度だから、
スライドバーとかのウィジェットを簡単にペタペタと貼って、データとリンクして、
という感じで適当にやろうと思ってたんだが・・・
考えが甘かったみたいだ。
>>941 が紹介してくれた中ではバナナがイメージに近いけど、
これも式の意味が今ひとつ分からんが、ちょっと時間かけて勉強してみるよ。
ありがと。
本格的な関数型言語のhaskellから入って、scalaを学ぶのは得策ですか?
>>944 目的も語らずに得策かどうかなんて本人以外に分かるわけないと思う
では、結構です。質問を撤回します。
俺ただ一人の意見だけで撤退かよ
Scalaで型クラスを使いたいとか、そういう珍しい野望があるなら Haskellやっとくと良いかも
そろそろ次スレの季節ですね
Textライブラリのビルドプロファイル版が遂に最終来たワラタwwwwwwww
リストの要素が全て同じ値なら True、ひとつでも違う値があれば False を返す関数って、 標準ライブラリの中にありましたっけ? f :: [a] -> Bool なければ作りますが、できるだけ標準ライブラリの中のものを使う方が良いと思うので。
all id
f :: Eq a=> [a] -> Bool f [] = True f ls = replicate (length ls) (head ls) == ls これのこと?
(flip all <*> ((==) . head)) これか?
200 MHz 64 MB text-0.11.3.1 通常ビルドプロファイル版ビルド完了 最新PCだと何分で終わるか知りたいワロタwwwwww
957 :
952 :2013/10/21(月) 12:38:00.51
できるだけ標準ライブラリを使いたいって言うから 頑張って実装したのに
コンパイル時間ならhaskell-src-metaもなかなか凄い
>>956 distcc出来ねえのか?wwwwww
私はGentooでHaskell-platformをインストールするのに1時間くらいかなあ
963 :
デフォルトの名無しさん :2013/10/22(火) 00:51:45.36
>>952 import Data.Set
(1==).size.fromList
ところで、nubって辞書ひくと「要点,核心」「小さなかたまり」らしくて、
まぁなるほどとは思うんだけど、数学用語としての意味とかあるの?
Hoogle先生も (The name nub means `essence'.) とおっしゃってるな
順序集合から集合への写像をessenceと言い張るのは 集合を本質と信奉する原理主義者が標準ライブラリ作者の中にいるという事
なにそれこわい もしかして、モサド?
今
>>193 が紹介してるリンク先をゆっくり読んでるのですが、
理解のために確認したいことがあります。
<Laws for sum types> のところで Add Void a === a の法則が出ててきます。
これが正しいことをfrom関数とto関数が作れることで証明したいのですが、
下記のようなもので良いのでしょうか。
from :: Add Void a -> a
from (AddL _) = undefined
from (AddR x) = x
to :: a -> Add Void a
to x = AddR x
これなら AddR a 型の方を使っている限り to (from a) == a と from (to b) == b
の同値性は保たれています。
一方 Void 型のとり得る値がないので AddL Void 型のとり得る値も存在しません。
こういう理解で良いでしょうか。
> to (from a) == a と from (to b) == b Haskellだとこれが証明できないんだよなぁ しかもundefinedがあるから() -> Voidが証明できちゃうし まずAgdaでやってその一部がHaskellでもできるよぐらいでいいんじゃないかな
Haskell製のdat取得システムが早速批評されてるな これから叩く人沢山出てきそう 一般公開することでそれで俺がもっとHaskellらしい書き方で作ってやるぜみたいな人を発掘するっていうのも目的の一つなんだろうか
ひろゆきサワーグレープセオリーwwwwwwww ひろゆきの知能じゃハスケルは手に余るのでござろうwwwwwwww
>>Haskell製のdat取得システム こんなのスクリプト言語でもできるじゃん 何?ドーナツの輪はなんであるのか?見たいな事をするときに使うとかほざいてたわりに 実用的なことで使われてるじゃん クズだな
卒研でHaskellで2ch用CUIブラウザ作った俺からすれば、何を今さら… shift_jisの日本語処理は諦めたからMSのコマンドプロンプトで実行すると文字が見えないが
MD5の情報ファイルを読み込もうと思う アットパーセックとかいうのを入れとけばいいんだろ?
>>974 それ、もうすこしすると、ちょっとした修正で使えるようになるんじゃない?
その卒研の新規性を知りたい
卒研に新規性を求めてはいけない(懇願)
卒研って研究室の教授はまるで見てないらしいな まあ学部生なんかどうでもいいか
おいおまえら、ここは2chだぞひろゆきの立場も考えろ そうーHaskellで書いたのー新規性ちゅごいですねー
2ch過去ログサイトunkarもGo言語で書かれているし、 マイナー言語を使って「俺カコイイ」したがる人は一定数いる さすがに卒研でShift-JISも処理できない専ブラ作る人は別の意味でレベルが違うがなw
学部3年の講義の課題でVMで動くJITコンパイラやGCライブラリを作る所も多いというのにそんな卒研で恥ずかしくないの?
Shift-JISも処理できない専ブラで卒研通っちゃうとか、 そこらへんのフリーソフトの作者は誰でも卒研通っちまうだろう
UIやアーキテクチャが論点かもしれないだろうし
そこらへんのフリーソフトの作者がソフト自体やブログしか発表しないから駄目なだけで きっちり論文にまとめられれば卒論・修論レベルになるのは普通にありそうだが
NTTデータがリバースエンジニアリングに使うらしいけど その顛末の方を知りたいな
>>986 リバースエンジニアリングにHaskellを使う?
JCLでCOBOLなレガシーシステムをマイグレーションするシステムをHaskellで作りました、 みたいな話でしょ。なんか聞いた記憶では。
>>969 Haskellでアンドロイドアプリ作れるようになるの?しゅごい!
>>989 AndroidはJavaのAPIが要だからfregeのが楽だぜ
ajhcは純Haskellで実用性重視という点で期待はできるが辛い
991 :
デフォルトの名無しさん :2013/10/25(金) 21:55:27.75
次スレも建ったことだし、埋めるか・・・
Haskellスレにも穴があるんだよな…
はぁ ♪ すける乳首に、 首ったけ♪
埋めるよー
Haskellっぽく埋めようぜ
GHCでFFI使う時みたいに自動生成したらええやん
>>997 実際やってみりゃわかるけど
ほぼ固定にできるから自分の使いたいように自動生成できるで
_|_
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。