X



関数型プログラミング言語Haskell Part31©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0528デフォルトの名無しさん
垢版 |
2018/02/22(木) 01:33:31.18ID:rShSr6qS
class Hoo a
x :: Hoo a => a -> a
y :: (Hoo a => a) -> a
x = undefined
y = undefined
-- f :: a -> a
-- f a = x a -- コンパイル通らない
g :: a -> a
g a = y a -- コンパイル通る。なんでだ
-- h = y :: a -> a -- 通らない
0529526
垢版 |
2018/02/23(金) 11:53:44.22ID:QhNOj82G
ghcを8.0.2 から 8.2.2に上げた。
h = y :: a -> a -- 通るようになった
0531デフォルトの名無しさん
垢版 |
2018/03/08(木) 07:40:29.03ID:NOpOgpfl
emacsでSymbols function definition is void: haskell-debug
てエラー文が出ちゃうんですが、原因わかる人いませんか、、
正確にはspacemacsのinteroです、、
0532デフォルトの名無しさん
垢版 |
2018/03/12(月) 03:18:18.08ID:IKn+w3cq
tanakhがイキリー田中って呼ばれているみたいだけどイキリーってどういう意味?

550番組の途中ですがアフィサイトへの転載は禁止です (ワンミングク MMda-oDZj)2018/03/11(日) 22:51:59.49ID:2Wu75Uw+M
pezyスパコン社員の
イキリー田中さん曰わく


Hideyuki Tanaka
@tanakh
最近ずっと国会で、国会じゃなくて裁判所でやるようなことばっかりやってないすか。もう逆に裁判所で政策議論した方が三権分立的にいいんじゃないすか(適当)
午前0:06 · 2018年3月10日
https://twitter.com/tanakh/status/972126503352676352
0535デフォルトの名無しさん
垢版 |
2018/03/12(月) 07:14:31.89ID:IKn+w3cq
Haskellで一番売れている本の訳者様だぞ
0537デフォルトの名無しさん
垢版 |
2018/03/12(月) 12:35:28.53ID:jLS1yZxx
売上データを証拠として提出する発想が裁判所だな
裁判の真似事をやってるのは統計学者だ
0540デフォルトの名無しさん
垢版 |
2018/04/03(火) 13:16:07.09ID:CL00mLmV
モナドの中での条件分岐ってはどうやればいいでしょうか

m0 >>= m1 arg1 【 >>= m2 arg2 】 >>= mN argN

【 】のブロックを条件に応じて呼び出すかどうかを制御したいです
whenだと値が取り出せない
0542デフォルトの名無しさん
垢版 |
2018/04/03(火) 16:36:19.17ID:bMx8P0pN
遅延評価って面白いね
ぱっと見挙動がわかりにくいのと使い所がみつけづらいのが難点だけど
0544デフォルトの名無しさん
垢版 |
2018/04/13(金) 01:52:39.63ID:UkwKelSp
purescriptをめっちゃ強化してクロスコンパイル&ネイティブコンパイル&jsコンパイル&wasmコンパイル可能でさらにビルド速度とGC性能をocaml並に出来ませんか😱
0545デフォルトの名無しさん
垢版 |
2018/04/17(火) 11:35:04.71ID:qNbsUSYn
もし自作の型が Generic クラスのインスタンスなら、
その型を Num クラスのインスタンスにするのは容易でボイラープレートを書くだけだ、
という話を聞いたのですが、どういうことでしょうか。
0546デフォルトの名無しさん
垢版 |
2018/04/17(火) 15:15:39.87ID:xGORc44D
Genericは代数的データ型の代数的構造に対して型クラスを使えるようにする仕組みという感じだから
例えば自然数の型クラスがあったらdata Nat = Zero | Succ Natっぽい型をインスタンスにできる(ようにできる)
data List a = Nil | Cons (List a)とかもList a=Natでいけそうだけど詳しいことは知らない
でNumは整数の型クラスだから符号情報を持たせた自然数っぽい型で考えればいいと思う
0547デフォルトの名無しさん
垢版 |
2018/04/18(水) 21:28:14.85ID:BYjTZdeC
FRPのBehaviorとEventの構成ってなんか恣意的なのかなって印象で手付かずだったけど、
型がそれぞれ関数と直積で、カリーハワード考えるとForAllとExistsですよて説明見たら、
何に効いてくるのかまだよく分からんけど、真面目にやろうかなと思った。
0553デフォルトの名無しさん
垢版 |
2018/04/26(木) 12:38:49.74ID:X3BRJjDS
公開したくない自作データ型を引数に持つ自作関数をhspecでテストする方法を探しています。

自作のモジュールは2つあり、ひとつはテストしたい関数 g がある ModSub、もうひとつは ModSub を使用する ModMain です。

-----[ ModMain.hs ]-----
module ModMain where
import ExtLib (calc) -- 外部ライブラリ
import ModSub

f = calc g 他のいくつかの引数 -- 他にも関数を呼び複雑な計算をする

-----[ ModSub.hs ]-----
module ModSub (g) where
import Control.Applicative
import ExtLib (SomethingClass) -- 外部ライブラリ

data D = D Bool Int
instance SomethingClass D where
 someFunc = pure D <*> makeBool 適当 <*> makeInt 適当

g (D b i) = 何か

ExtLib の calc 関数は Something クラスのインスタンス型を引数に持つ関数を取り、その具体的な型は知る必要がありません。
私はアプリケーションの作成に当たって公開しなても動く設計のものは公開しないスタンスです。
なので、ModSub モジュールは D 型のコンストラクタを公開していません。

このような状況ではテストモジュールからも D 型が使えずテストできないため、私は2つの選択肢を考えました。
ひとつは、諦めてスタンスを曲げて D 型のコンストラクタを公開する。
もうひとつは、D 型を別のモジュール InnerModSub 内に定義して公開し、ModSub モジュールとテストモジュールは InnerModSub モジュールを使う。
そして、ModMain モジュールや他のモジュールは決して InnerModSub モジュールを使わないようルールを設ける。

他に何か良い方法はあるでしょうか。
0555デフォルトの名無しさん
垢版 |
2018/04/27(金) 07:51:16.88ID:5zUTZf4m
>>554
アドバイスありがとうございます。

その方法でやっても、さらに、そのモジュールを exposed-midules に置くかどうかの選択肢があるのですね。

検討してみます。
0560デフォルトの名無しさん
垢版 |
2018/05/06(日) 10:12:01.34ID:KRn6cuFA
Reflexやってる人います?Stackと親和的じゃないから結局諦めちゃった。

Threepenny-GUIはシンプルで良いね。Threepennyで作ったのをiOSやAndroidに移植できるんかな。
0562デフォルトの名無しさん
垢版 |
2018/05/16(水) 06:39:11.37ID:KuTIShdq
intellijにhaskellいれようとしてたらいくらやってもだめだったの
よーくみたらWindow Defenderがじゃましてた
はらたつー
0564デフォルトの名無しさん
垢版 |
2018/05/20(日) 16:01:44.58ID:h2BQfP5S
random パッケージの System.Random モジュールの split 関数は、
新しい RandomGen クラスのインスタンスをなぜ2つも生成するのでしょうか。

2つのインスタンスが要るのなら、引数の1つ目があるのだから、
新たに生成するのも1つで十分だと思うのです。
もっと必要なら、この処理を繰り返せばいいのでは?

私は何か勘違いをしているのでしょうか。
0565デフォルトの名無しさん
垢版 |
2018/05/20(日) 17:35:56.32ID:FfB1JAMU
そもそもnextだってgetValとnextGenに分けてもいいけどね
まあ基本的には設計とか効率の問題なんじゃない?
それに戻り値が一つのsplitは引数の方がそのままもう一回splitされないように注意する必要があるし
0566デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:45:00.92ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

P0GWF
0569デフォルトの名無しさん
垢版 |
2018/05/26(土) 04:33:44.12ID:d8ZkW1Ij
GHCのインストール先の変え方教えて
ちなWindows
Cドライブに入れたくない
0570デフォルトの名無しさん
垢版 |
2018/05/26(土) 04:40:40.86ID:d8ZkW1Ij
Stackのコンフィグをイジる?
0571デフォルトの名無しさん
垢版 |
2018/05/31(木) 00:34:57.11ID:zA1zBE3e
haskellの練習してる初心者なんですが2進数の文字列表現を10進数の整数に変換する処理ってこんな感じで大丈夫でしょうか? https://csacademy.com/code/CsGalG5X/
0572デフォルトの名無しさん
垢版 |
2018/05/31(木) 01:09:51.63ID:CXLwfWM5
単に数値にしてるだけであって、10進数に変換して表示してるのはprintさんでしょ?
0576デフォルトの名無しさん
垢版 |
2018/06/05(火) 20:09:41.67ID:pRSj0ubW
どうでもいいけど、それぞれのGHC言語拡張の名前で単数形と複数形の違いがいまいち分からん。
うろ覚えで複数形で書いてコンパイルエラーになったり。

命名規則とかあるんかな?
0577デフォルトの名無しさん
垢版 |
2018/06/06(水) 07:44:03.32ID:azXcBu8b
使った中じゃ英語で説明するのに複数形が使われるであろうものなら
大体複数形だったと思うけど
カタカナ語のノリでやってるから割と間違う
0579デフォルトの名無しさん
垢版 |
2018/06/17(日) 22:53:19.15ID:kUxbeqDh
すごいHだから勃起botをリツイートしてるのか
0583デフォルトの名無しさん
垢版 |
2018/06/27(水) 12:31:39.52ID:+XG/5Wm3
今時コンパイルとか流行らないよ
サクッと書けても実行までが面倒だと普及しない
もっと標準ライブラリをヘビィにしてPython化するしか生き残りの道はない
0584デフォルトの名無しさん
垢版 |
2018/06/27(水) 14:44:28.75ID:rnjnLILH
同意だ。Turtle使ってシェバンにstackコマンドライン書いて、
Haskellでシェルスクリプトするというのがあったが正気の沙汰とは思えない。
0586デフォルトの名無しさん
垢版 |
2018/06/27(水) 22:56:56.37ID:kWgGKFVN
どれだけ簡潔に記述出来ても
短いプログラムでは実行するまでの手間の割合が大きくなるから
pythonでいいやってなる
0587デフォルトの名無しさん
垢版 |
2018/06/28(木) 05:41:11.51ID:F07eHa3U
対話環境使わんの?短いプログラムてのがどんな状況か知らんからなんとも。
0588デフォルトの名無しさん
垢版 |
2018/06/28(木) 07:28:52.90ID:BPlVOF4a
Haskellで簡潔に書けるという特殊能力を持っておきながら
破壊的で動的型付けな言語を選ばなければいけないという悲劇
0589デフォルトの名無しさん
垢版 |
2018/06/28(木) 15:27:57.03ID:5C2saF7L
なんで宗教みたいに二者択一になるの
要所要所で使い分ければいいだけでしょ
0590デフォルトの名無しさん
垢版 |
2018/06/28(木) 16:47:06.64ID:aKd05JxM
たかだか数秒のことで簡潔さを失いたいとは思わないね
0592デフォルトの名無しさん
垢版 |
2018/06/28(木) 17:36:24.62ID:kdV1Odt0
簡単なプログラムだと
このifでこれとこれ書き換えてさらにネストしたifでこれとこれを書き換えて
とかやっちゃうな
haskellでもStateモナドとか使えばいいんだろうけど
0593デフォルトの名無しさん
垢版 |
2018/06/28(木) 18:02:30.70ID:rjCVmVg9
文字列を直接操作したければ動的型でいい
直接操作することなくShowとReadで処理できるならHaskellの型は無駄ではない
0597デフォルトの名無しさん
垢版 |
2018/06/28(木) 22:01:03.00ID:GLp7lVXW
文字列入力を要求してその文字列を含むファイルを検索して見つかったらエディタで開く、
的な、コマンドラインからさっと使いたいので実行までが重いと困るけど、
cabalプロジェクトにする程のもんでもない規模のやつ
0600デフォルトの名無しさん
垢版 |
2018/07/02(月) 22:40:55.64ID:Q8zb4uVa
Haskellは"関数型だから"コードが短く生産性が高いと聞いたのに
関数型ではないPythonの方がコードが短く書けると知った時の絶望感
0603デフォルトの名無しさん
垢版 |
2018/07/03(火) 12:11:44.26ID:jJAl/nPq
関数型こそ邪悪なシンタックスに頼らない無敵の流派なのだ
ただし両方使う方が強い
0608デフォルトの名無しさん
垢版 |
2018/07/03(火) 20:42:26.69ID:kQlTmain
>>606
hackage にアップされているグラフ描画ライブラリの
まともではない点とその理由を列挙していただけないでしょうか。

来月ちょっと暇ができるので、ここで議論が深まれば、
列挙されたものの幾つかを改善してみようかと思います。
0609デフォルトの名無しさん
垢版 |
2018/07/03(火) 22:20:48.11ID:UwUpR5rd
>>608
Haskell は調べかかってあきらめたからよく知らないんだが、Python ユーザの視点で書かせてくれ。

Python だとグラフ描くライブラリは、単純な(と言っても強力な)matplotlib って Matlab のパクリの他、
よりハイレベルなグラフが簡単に描けるライブラリとか、インタラクティブなグラフが描けるライブラリとかがある。
どれも、Jupyter ってWeb環境から普通に使えるし、データフレームって表みたいなデータ構造を入力に出来る。
データフレームはつまらないけど実用的には必須で、
カンマ区切りのテキストファイルとかエクセルとかデータベースを読み取れる。

Haskell ってそもそも標準的なデータフレームが無い気がするんだ。間違ってたらぜひ教えて欲しい。

あとオレが調べた時は単純にHaskell のグラフライブラリは見た目が古臭かった。gnuplot 並み。
最近だとPythonでもRでも、カッコいい色のセットとかを選べるし、複数のグラフを簡単にレイアウトできる。
頑張ればカッコよく描けるのかもしれないけど、そんなところに頑張りたくないんだ。
0611デフォルトの名無しさん
垢版 |
2018/07/04(水) 03:48:39.08ID:y2B7jfXw
すいません。ハマってしまってます。助けてください。
GHC 7.8.3です。
有理数係数の複素数の計算をしようとして
import Data.Ratio
import Data.Complex
として
Prelude Data.Ratio Data.Complex> ((0%1):+(1%1))^2
としたら

<interactive>:5:1:
No instance for (RealFloat (Ratio a0)) arising from a use of ‘it’
In a stmt of an interactive GHCi command: print it

と駄目みたいです。
何がだめなのかさっぱりわかりません。
どなたか解決策わかりますか?
0612デフォルトの名無しさん
垢版 |
2018/07/04(水) 06:46:15.75ID:We7MgVDS
>>609
matplotlibやpandasあたりは、
そのためだけに、Python使うくらいのライブラリだから、
他の言語に使いたいライブラリがあれば、
その言語を使うで使い分けで良いんじゃない。
Excelの読み書きもなんかもPython使ってるよ。
0615デフォルトの名無しさん
垢版 |
2018/07/04(水) 11:08:34.25ID:y2B7jfXw
>>614
ありがとうございます。
Ratio a 割り算できるのに駄目なんですね。
別法考えます。
0616デフォルトの名無しさん
垢版 |
2018/07/04(水) 11:21:15.35ID:rsOJUgV3
>>609
例えば QuickPlot (https://github.com/sheegl/QuickPlot)
そこそこモダンな描画を行うライブラリでしたが、
README.md にあるとおり、もうメンテナンスは行われていません。
ビジュアライゼーションサーバーのクライアントを作る方がより効率的だから、だそうです。

私もそう思います。
haskell でグラフ描画ライブラリを作るなら、
・データの作成 (取得や加工、整形など)
・サーバーへアクセスするためのインターフェース
この2点の実装に絞りたいですね。

データの作成は、python では Pandas のデータフレームを挙げていますが、
haskell ではこんなのはどうでしょうか。
https://github.com/chrisdone/labels/tree/master/labels-explore

あと、gnuplot を卑下してるようですが、そんなにダメですか?
私には視認性の良いグラフに見えますけど。
Wikipedia のグラフにも使われていますし。
0617デフォルトの名無しさん
垢版 |
2018/07/04(水) 14:52:23.98ID:okkM4kUQ
gnuplot も悪いとまでは言わないが、昔の解像度が低く色数もあまりなかった時代に最適化されてる気がするんだよ
Python のグラフと、微妙に用途が違うのかもしれないが

Python のグラフ
ttps://seaborn.pydata.org/examples/index.html
0619デフォルトの名無しさん
垢版 |
2018/07/04(水) 19:14:51.99ID:J/c/gMh10
会社のプレゼンに使うならPythonの例の方がオシャレに見える
しかしオシャレなグラフというのは見栄え以外の面では役に立たない
0620デフォルトの名無しさん
垢版 |
2018/07/04(水) 21:47:59.97ID:gFgZc5FG
MY6
0622デフォルトの名無しさん
垢版 |
2018/07/05(木) 06:27:20.02ID:fgqUaerO
Pythonの例として上げられてるのは、seabornという
1. Rからデザインと
2. 人気のあるデータ表示方法
をパクって、同じことをmatplotlib.pyplotを裏で使ってお手軽にできるようにしたパッケージであって、
素のmatplotlib.pyplotのグラフはgnuplotのデフォルトと変わりのない見た目ですよ

gnuplotだって、山ほど表示用オプションがあって綺麗に表示できます
0623デフォルトの名無しさん
垢版 |
2018/07/05(木) 09:04:27.74ID:HeNpkv8u
>>622
gnuplot でお手軽に綺麗に表示できるようになってるの?

話が逸れたが、ある程度データ構造が共通に使えて
目的に応じて使えるかなり機能も見た目も
良くできたグラフライブラリが幾つかある、ってのが Python の状況だよ
個人的にはHaskell でそれが出来りゃ嬉しいが、、
Python は実行しないとエラーが出ないから、げんなりする時もある

教えてもらった labels- explorer は面白そうなんで見てみるよ
0624デフォルトの名無しさん
垢版 |
2018/07/05(木) 12:35:27.07ID:aP+h4Ji7
>>623
綺麗にできるかどうかは使用者のセンスに依ると思います。
python の方のサンプルは、単に淡い色を使い、
線を太めに表示しているだけに見えますが、違いますか?
他に python のグラフならではの特徴があれば言ってください。

下記のような設計のライブラリがあればあなたの要望は満たされますか?

1. 見た目が python のサンプルの様になる「デザインのプリセット」がある。

2. pandas のデータフレームに似た使い勝手の「2次元の表」からグラフを生成できる。

3. 上記1. 2. を満たせば、グラフの生成自体は gnuplot に任せても良い。
0626デフォルトの名無しさん
垢版 |
2018/07/05(木) 18:32:51.78ID:Ia+ptacm
そんなところ頑張りたくないからデフォルトで一般受けする図を出せる奴が欲しいってだけの議論でなんでこんな白熱するんだ
0627デフォルトの名無しさん
垢版 |
2018/07/05(木) 18:54:20.69ID:rB4OVQ4f
>>626
Pythonユーザーの視点、て一言がたぶん余計だったと見受けられる。

Haskellな人、でググると逆の気持ちが分かるかと。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況