関数型プログラミング言語Haskell Part31©2ch.net

1デフォルトの名無しさん 転載ダメ©2ch.net2017/09/27(水) 02:33:08.70ID:2XAqPuH2
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
https://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part30
http://mevius.2ch.net/test/read.cgi/tech/1484491434/

520デフォルトの名無しさん2018/02/02(金) 20:45:14.24ID:PIo4kucW
https://wiki.haskell.org/GHC/AdvancedOverlap
これは自前でインスタンスの一覧作ってる

521デフォルトの名無しさん2018/02/03(土) 00:14:03.29ID:st4XedSX

5225182018/02/03(土) 00:59:05.30ID:z/YnSxMM
AdvancedOverlapは外でShowのインスタンスが増えた時に対応できないです。
isInstanceOf ! そういうのがあるんですか。調べてみます。

これを通して実現したい機能は、頭部ではなく型制約でオーバーロードしたいというもの。
具体的にはdiagramsパッケージの元で作ったダイアグラムを画像化したい。
同じ関数で Show a も画像化したい。
一見簡単そうなんですけど、普通に合成したダイアグラムの頭部に具体的な型がつかないので、
通常の型クラスのインスタンス化でオーバーロードできない。
instance Show a => Hoo a where ...
instance (a ~ Diagram B) => Hoo a where ...
-- コンパイルエラー!

523デフォルトの名無しさん2018/02/03(土) 22:01:25.34ID:GVlapN64
すみません、
Huttonの「プログラミングHaskell」で
学習をしているのですが
練習問題の解答が
著者や役者のサイト等を見ても見当たらなく
もし掲載のページを知ってたら教えて下さい。

524デフォルトの名無しさん2018/02/04(日) 04:24:30.53ID:fRCSu2fr
プログラミングHaskell 訳者によるサポートページ
http://www.mew.org/~kazu/doc/book/haskell.html
> 練習問題の答は、原著者のサポートページにあります。

5255232018/02/04(日) 12:22:57.81ID:VtcsF5YK
>>524
すみません。
原著者のサポートページでは回答例を見つける事ができませんでした。
翻訳されていないの新版には回答例が掲載されているようですね。

526デフォルトの名無しさん2018/02/04(日) 14:14:55.60ID:+WAJGnPT
コード例とかならここにあるみたいだけど
http://www.cs.nott.ac.uk/~pszgmh/book-old.html

527デフォルトの名無しさん2018/02/04(日) 19:26:34.09ID:VtcsF5YK
>>524 >>526

ありがとうございます。
学習の参考にさせて頂きます。

528デフォルトの名無しさん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 -- 通らない

5295262018/02/23(金) 11:53:44.22ID:QhNOj82G
ghcを8.0.2 から 8.2.2に上げた。
h = y :: a -> a -- 通るようになった

530デフォルトの名無しさん2018/03/05(月) 00:25:18.18ID:rygpwPFq
このコンテストに参加してるHaskellerたったの6人と少ないのでチミたちも参加したまえ

https://www.codingame.com/leaderboards/challenge/botters-of-the-galaxy/global?column=slanguage&value=Haskell

531デフォルトの名無しさん2018/03/08(木) 07:40:29.03ID:NOpOgpfl
emacsでSymbols function definition is void: haskell-debug
てエラー文が出ちゃうんですが、原因わかる人いませんか、、
正確にはspacemacsのinteroです、、

532デフォルトの名無しさん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

533デフォルトの名無しさん2018/03/12(月) 03:22:34.32ID:IdW8RVi3
裁判所でもこんなあほなことやらん

534デフォルトの名無しさん2018/03/12(月) 06:27:09.63ID:uoSNo/WD
スレチの相手するなバカ

535デフォルトの名無しさん2018/03/12(月) 07:14:31.89ID:IKn+w3cq
Haskellで一番売れている本の訳者様だぞ

536デフォルトの名無しさん2018/03/12(月) 11:28:56.92ID:67958OQ2
著者じゃなく訳者程度ってのをよく示しているのでは

537デフォルトの名無しさん2018/03/12(月) 12:35:28.53ID:jLS1yZxx
売上データを証拠として提出する発想が裁判所だな
裁判の真似事をやってるのは統計学者だ

538デフォルトの名無しさん2018/03/12(月) 12:37:27.36ID:Z6lm3+Nm
過疎を理由にスレチを正当化してはいけない

539デフォルトの名無しさん2018/03/12(月) 17:16:39.91
最近毛の壁みないな

540デフォルトの名無しさん2018/04/03(火) 13:16:07.09ID:CL00mLmV
モナドの中での条件分岐ってはどうやればいいでしょうか

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

【 】のブロックを条件に応じて呼び出すかどうかを制御したいです
whenだと値が取り出せない

541デフォルトの名無しさん2018/04/03(火) 13:25:16.21ID:CL00mLmV
自己解決しました
普通にif使えるんですね

542デフォルトの名無しさん2018/04/03(火) 16:36:19.17ID:bMx8P0pN
遅延評価って面白いね
ぱっと見挙動がわかりにくいのと使い所がみつけづらいのが難点だけど

543デフォルトの名無しさん2018/04/03(火) 20:15:57.85ID:BMbwb1La
https://twitter.com/fujiy0/status/980831517973688325

Haskellのビジュアルプログラミング面白そうだけど面倒そうでもあるね

544デフォルトの名無しさん2018/04/13(金) 01:52:39.63ID:UkwKelSp
purescriptをめっちゃ強化してクロスコンパイル&ネイティブコンパイル&jsコンパイル&wasmコンパイル可能でさらにビルド速度とGC性能をocaml並に出来ませんか😱

545デフォルトの名無しさん2018/04/17(火) 11:35:04.71ID:qNbsUSYn
もし自作の型が Generic クラスのインスタンスなら、
その型を Num クラスのインスタンスにするのは容易でボイラープレートを書くだけだ、
という話を聞いたのですが、どういうことでしょうか。

546デフォルトの名無しさん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は整数の型クラスだから符号情報を持たせた自然数っぽい型で考えればいいと思う

547デフォルトの名無しさん2018/04/18(水) 21:28:14.85ID:BYjTZdeC
FRPのBehaviorとEventの構成ってなんか恣意的なのかなって印象で手付かずだったけど、
型がそれぞれ関数と直積で、カリーハワード考えるとForAllとExistsですよて説明見たら、
何に効いてくるのかまだよく分からんけど、真面目にやろうかなと思った。

548デフォルトの名無しさん2018/04/20(金) 15:57:50.03ID:0HOWAbgI
Yesod のオライリー本ってまだ翻訳されてないの

549デフォルトの名無しさん2018/04/20(金) 19:31:13.34ID:wBOVlPyY
print "日本語"
で日本語を表示するにはどうしたらいいですか?

550デフォルトの名無しさん2018/04/20(金) 20:11:46.72ID:kdAO2jaP

551デフォルトの名無しさん2018/04/20(金) 20:49:36.18ID:4Eu7Barh
できないんですね
わかりました

552デフォルトの名無しさん2018/04/20(金) 21:00:49.10ID:0HOWAbgI
できますよ

553デフォルトの名無しさん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 モジュールを使わないようルールを設ける。

他に何か良い方法はあるでしょうか。

554デフォルトの名無しさん2018/04/26(木) 22:19:07.30ID:XXRDrUvo
>>553
ふたつめの選択肢が定番の解決策っぽい。Internalディレクトリに実装をまとめといて上層でre-export。
https://disarli.me/blog/haskell/testing/2017/08/21/testing-non-exported-functions-with-haskell.html

555デフォルトの名無しさん2018/04/27(金) 07:51:16.88ID:5zUTZf4m
>>554
アドバイスありがとうございます。

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

検討してみます。

556デフォルトの名無しさん2018/05/03(木) 01:36:32.06ID:kRKy+vnx
ようやくwin10 wslでghcが遅かった件直った感じかな

557デフォルトの名無しさん2018/05/04(金) 07:55:06.89ID:losdahgV

558デフォルトの名無しさん2018/05/04(金) 08:58:01.41ID:eKrFMwvm
日本人の「モナド萌え〜」Tシャツはないの?

559デフォルトの名無しさん2018/05/06(日) 09:54:40.96ID:KRn6cuFA
モナまでは可愛いが、油断してるとドがついて怖い感じ。

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

Threepenny-GUIはシンプルで良いね。Threepennyで作ったのをiOSやAndroidに移植できるんかな。

561デフォルトの名無しさん2018/05/09(水) 03:57:47.41ID:yAd9yFdW
>>557
三拍子揃っててだめだった

562デフォルトの名無しさん2018/05/16(水) 06:39:11.37ID:KuTIShdq
intellijにhaskellいれようとしてたらいくらやってもだめだったの
よーくみたらWindow Defenderがじゃましてた
はらたつー

563デフォルトの名無しさん2018/05/16(水) 14:15:35.67ID:86oQSZWQ
MS「永続性はウイルス」

564デフォルトの名無しさん2018/05/20(日) 16:01:44.58ID:h2BQfP5S
random パッケージの System.Random モジュールの split 関数は、
新しい RandomGen クラスのインスタンスをなぜ2つも生成するのでしょうか。

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

私は何か勘違いをしているのでしょうか。

565デフォルトの名無しさん2018/05/20(日) 17:35:56.32ID:FfB1JAMU
そもそもnextだってgetValとnextGenに分けてもいいけどね
まあ基本的には設計とか効率の問題なんじゃない?
それに戻り値が一つのsplitは引数の方がそのままもう一回splitされないように注意する必要があるし

566デフォルトの名無しさん2018/05/23(水) 19:45:00.92ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

P0GWF

567デフォルトの名無しさん2018/05/24(木) 10:55:19.93ID:cPlRxlDn
567

568デフォルトの名無しさん2018/05/25(金) 21:11:33.96ID:cptzVN/K
エスパー来る

ところで、関数型言語のこの世の春は来ますか?

569デフォルトの名無しさん2018/05/26(土) 04:33:44.12ID:d8ZkW1Ij
GHCのインストール先の変え方教えて
ちなWindows
Cドライブに入れたくない

570デフォルトの名無しさん2018/05/26(土) 04:40:40.86ID:d8ZkW1Ij
Stackのコンフィグをイジる?

新着レスの表示
レスを投稿する