[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/21 14:46 / Filesize : 290 KB / Number-of Response : 1014
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型プログラミング言語Haskell Part30



1 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 23:43:54.28 ID:Vh4eztBk.net]
関数型プログラミング言語 Haskell について語るスレです。

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

前スレ
関数型プログラミング言語Haskell Part28
echo.2ch.net/test/read.cgi/tech/1428597032/

2 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 23:46:14.19 ID:Vh4eztBk.net]
過去スレ一覧
28) peace.2ch.net/test/read.cgi/tech/1428535861/
27) peace.2ch.net/test/read.cgi/tech/1420718555/
26) peace.2ch.net/test/read.cgi/tech/1406436392/
25) peace.2ch.net/test/read.cgi/tech/1393313450/
24) toro.2ch.net/test/read.cgi/tech/1382705669/
23) toro.2ch.net/test/read.cgi/tech/1376111807/
22) toro.2ch.net/test/read.cgi/tech/1364009659/
21) toro.2ch.net/test/read.cgi/tech/1358702176/

3 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 23:46:30.44 ID:Vh4eztBk.net]
20) toro.2ch.net/test/read.cgi/tech/1350428908/
19) toro.2ch.net/test/read.cgi/tech/1340760070/
18) toro.2ch.net/test/read.cgi/tech/1331902463/
17) toro.2ch.net/test/read.cgi/tech/1325510368/
16) toro.2ch.net/test/read.cgi/tech/1317958045/
15) hibari.2ch.net/test/read.cgi/tech/1310199414/
14) hibari.2ch.net/test/read.cgi/tech/1299385928/
13) hibari.2ch.net/test/read.cgi/tech/1286706874/
12) hibari.2ch.net/test/read.cgi/tech/1272536128/
11) pc12.2ch.net/test/read.cgi/tech/1252382593/
10) pc12.2ch.net/test/read.cgi/tech/1231861873/
09) pc11.2ch.net/test/read.cgi/tech/1211010089/
08) pc11.2ch.net/test/read.cgi/tech/1193743693/
07) pc11.2ch.net/test/read.cgi/tech/1174211797/
06) pc11.2ch.net/test/read.cgi/tech/1162902266/
05) pc8.2ch.net/test/read.cgi/tech/1149263630/
04) pc8.2ch.net/test/read.cgi/tech/1140717775/
03) pc8.2ch.net/test/read.cgi/tech/1076418993/
02) pc2.2ch.net/test/read.cgi/tech/1013846140/
01) pc.2ch.net/tech/kako/996/996131288.html

4 名前:関連サイト mailto:sage [2017/01/15(日) 23:47:46.51 ID:Vh4eztBk.net]
(英語)
Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり)
https://en.wikibooks.org/wiki/Haskell

Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版)
learnyouahaskell.com/chapters

Real World Haskell (同名書籍の無料オンライン版)
book.realworldhaskell.org/read/

(以下、日本語)
Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション)
https://wiki.haskell.org/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97

Haskell - Wikibooks (上記Wikibooksの同タイトル日本語版。多くの項目が未編集)
https://ja.wikibooks.org/wiki/Haskell

Programming in Haskell
www.sampou.org/cgi-bin/haskell.cgi

Haskell のお勉強
www.shido.info/hs/

Haskell Programming
www.geocities.jp/m_hiroi/func/haskell.html

本物のプログラマはHaskellを使う:ITpro
itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/

[入門]関数プログラミング―質の高いコードをすばやく直感的に書ける!
gihyo.jp/dev/feature/01/functional-prog

5 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 07:56:53.70 ID:fQO7vc6n.net]


6 名前:デフォルトの名無しさん [2017/01/16(月) 15:43:59.55 ID:WQ/ved8Z.net]
Wikipediaの人工知能に適した言語のリストにHaskellがあったけど、やはり最近流行りの統計的なアプローチがされているのかな

LogicTモナドが使えるらしいけどよく分からない

7 名前:デフォルトの名無しさん [2017/01/16(月) 19:31:44.98 ID:FYjqZVjV.net]
適しているという話は聞いても
使われているという話を聞いた事はない不思議

8 名前:デフォルトの名無しさん [2017/01/16(月) 19:44:49.27 ID:MHdfZn+y.net]
>>7
村主さんが開発したFormura(Formulaではない)というプログラムを自動生成するプログラミング言語があるみたい

人工知能ではないけど似たものを感じる

9 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 20:10:23.15 ID:cwyxJ1cI.net]
ディープラーニングはほぼ完全にPythonに食われちゃった

10 名前:デフォルトの名無しさん [2017/01/16(月) 21:52:49.11 ID:e08JNJ9T.net]
前スレで質問しようとして何か変な風に失敗してしまいました...
再掲させてください

----
aojの問題でわからないところがあるので質問します.
judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0033
二股にわかれた容器に1から10まで番号のついたボールを番号の大小関係の制約を守って並べていけるかを判定する問題なんですが,自分のコードを提出するとruntime errorになってしまいます.
理由も考えたんですがよくわからないので,何がダメなのかアドバイスをお願いしたいです.


main :: IO ()
main = getContents >>= mapM_ (putStrLn . (\arr -> solve (tail arr) 0 (head arr, 0)) . map (read :: String -> Int) . words) . tail . lines

solve :: [Int] -> Int -> (Int, Int) -> String
solve arr index (box1, box2)
| index == length arr = "YES"
| otherwise =
if box1 < box2 then
solve arr index (box2, box1)
else
if arr !! index > box1 then
solve arr (index + 1) (arr !! index, box2)
else
if arr !! index > box2 then
solve arr (index + 1) (box1, arr !! index)
else
"NO"



11 名前:デフォルトの名無しさん [2017/01/16(月) 23:17:40.44 ID:7uYw7kg2.net]
競技プログラミングにハマるプログラマのスレ 8
tamae.2ch.net/test/read.cgi/prog/1483782812/l50

12 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 23:44:35.96 ID:YUCFPIN/.net]
まあHaskellの質問だとHaskellスレで聞かないとスルーされるから
回答してあげるのが優しさってもんよ。

13 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 00:17:06.16 ID:BMtHP56w.net]
優しい回答例
エラーの原因を探し出しその場所をピンポイントで変更してあげる

優しくない回答例
面倒だから変更できそうな場所は必要あろうがなかろうが全部変更してみろ

14 名前:デフォルトの名無しさん [2017/01/17(火) 00:47:05.23 ID:gDgxXQqt.net]
>>10
judge.u-aizu.ac.jp/onlinejudge/solution.jsp?pid=0033&lid=13

haskell回答は3人しかいないな

15 名前:デフォルトの名無しさん [2017/01/17(火) 01:19:14.78 ID:+KcFvgyU.net]
if arr !! index > box1 then
solve arr (index + 1) (arr !! index, box2)
else

の部分では、box1>box2 なのでどちらの分岐も考えられる
出力の型をBoolに変更し

if arr !! index > box1 then
solve arr (index + 1) (arr !! index, box2) || solve arr (index + 1) (arr !! index, box2)
else

でどうでしょう。で後からTrue,FalseをYES,NOに変えればOK 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


16 名前:デフォルトの名無しさん [2017/01/17(火) 01:20:40.28 ID:+KcFvgyU.net]
訂正

if arr !! index > box1 then
solve arr (index + 1) (arr !! index,box2) || solve arr (index + 1) (box1,arr !! index)
else

17 名前:デフォルトの名無しさん [2017/01/17(火) 01:35:04.21 ID:9da45IOD.net]
>>15
勘違い。これは原因ではないので無視してください

18 名前:デフォルトの名無しさん [2017/01/17(火) 01:48:42.05 ID:gNSY+qrn.net]
皆さん
反応ありがとうございます.
Haskellは周りに聞ける人がいなかったので助かります

19 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 13:27:32.57 ID:KBo6p4cv.net]
Haskellで競プロは隔靴掻痒という感想
実行制限時間がC++を前提に設定されてるから辛い
しかも Haskell 提出者が少なすぎて、AC 解答を覗いて速いコードを書く知見を獲るということができない

強い Haskeller 先輩各位は競プロサイトにアカウントを作って(競技には参戦しなくてもいいから)暇なときに過去問で誰も Haskell による AC が出てないものを適当に AC していって知見をバラまいてリードしてほしい

20 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 17:07:58.89 ID:upTI+ygx.net]
>>10 の問題は実際のアプリ作りのどういうシーンに応用できるの?



21 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 18:24:57.23 ID:BMtHP56w.net]
アプリの有用性ではなく難易度を研究してるんだろう

例えば人工知能が完成したらどれだけ役に立つかではなく
実際に完成する確率は何パーセントくらいかに興味がある

22 名前:デフォルトの名無しさん [2017/01/17(火) 20:38:31.88 ID:+KcFvgyU.net]
頓珍漢な質問かもしれませんが

ghciの:sprintでその時点での式の評価の深さを知ることができると思うんですが
評価の深さ自体を扱うプログラムを組むことってできるのでしょうか

23 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 21:11:08.46 ID:yOV+pApV.net]
>>22
評価の深さって何?
浅い評価と深い評価の例を挙げてみてくれないか。

評価の深さ自体を扱うって、具体的には何がしたいの?
特に何かしたい訳じゃなければ、どういうプログラムを想定しているか、
に置き換えてもいいんたが、とにかく何か具体例がないと、
何を言っているのか分からん。

24 名前:デフォルトの名無しさん [2017/01/17(火) 22:10:59.79 ID:+KcFvgyU.net]
>>23
考えなしに深さという言葉を使ってしまいました
リストの評価についてです

Prelude> let xs = map (*2) [1..5]
Prelude> :sprint xs
xs = _
Prelude> xs `seq` ()
()
Prelude> :sprint xs
xs = _ : _
Prelude> length xs
5
Prelude> :sprint xs
xs = [_,_,_,_,_]
Prelude> xs !! 2
6
Prelude> :sprint xs
xs = [_,_,6,_,_]
Prelude> xs
[2,4,6,8,10]
Prelude> :sprint xs
xs = [2,4,6,8,10]

といったようになりますが
ある時点の評価について二つのリストが同じになる可能性があればTrue、なければFalseを出力するようなことをしたいと思っています。
例として、[_,_]と[_,_]や、_と[_,_]、_:_と[_,_]、[1,_]と[_,2]などはTrue。
[_,_,_]と[_,_]、[_,1]と[_,2]などはFalseになると言った感じです。

似たようなことがスマートにできる方法があれば教えて頂きたいです。

25 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 22:52:03.18 ID:yOV+pApV.net]
>>24
ghc-heap-viewとかのghcハック関係のライブラリや、それらのソースをあさってみてはどうだろう。

俺も調べてみて初めて知ったが、ghc-visって面白そうだな。

26 名前:デフォルトの名無しさん [2017/01/17(火) 23:13:22.52 ID:+KcFvgyU.net]
>>25
ありがとうございます!
その辺りを勉強してみます。

27 名前:デフォルトの名無しさん mailto:sage [2017/01/20(金) 20:35:21.61 ID:UH4PToPO.net]
すごいとプログラミングの2冊よんだけど次どうすりゃいいの
本殆ど無いし

28 名前:デフォルトの名無しさん mailto:sage [2017/01/20(金) 21:07:25.07 ID:NJo0QCWa.net]
好きなもの作ればいいと思うよ

29 名前:デフォルトの名無しさん mailto:sage [2017/01/20(金) 21:27:38.70 ID:F6U1j3oz.net]
俺は静的型付けをゴリ押しされたのでHaskellをやってみたけど次はC++かな
静的型付けの本がないならHaskellとC++の本を読む

30 名前:デフォルトの名無しさん mailto:sage [2017/01/20(金) 23:07:09.10 ID:Mei5GLPp.net]
>>27
CUIの家計簿アプリを作る。
それができたら、GUIの年賀状アプリを作る。



31 名前:デフォルトの名無しさん mailto:sage [2017/01/20(金) 23:25:09.60 ID:elfFgoly.net]
普段から家計簿をつけないし
毎年年賀状も出さない
作るならもっと実用的なアプリはないか

32 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 00:19:25.12 ID:0azuxgYp.net]
麻雀AIを作るばよい

33 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 01:18:36.08 ID:vr64D6+/.net]
Real World Haskell って不人気なの?

34 名前:デフォルトの名無しさん [2017/01/21(土) 06:37:05.65 ID:9Cnx0LpZ.net]
Real World Haskell ってやつで勉強してみるは!

35 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 08:24:01.76 ID:bTMqa3aS.net]
>>31
じゃあ部屋の写真や動画から、その部屋の3Dモデルを生成するアプリは?
模様替えとか、新しい友人に紹介する時とかに便利。

36 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 10:48:25.57 ID:bTMqa3aS.net]
質問

stack でドキュメントも同時に生成するようにビルドすると(haddock: true)、
依存してるstackageのパッケージのドキュメントは生成されるけど、
stack.yamlのextra-depsの項に追加したパッケージの物は生成されなかった。

後者のドキュメントも生成して、
~/.stack/snapshots/<arch>/<lts version>/<ghc version>/doc/
に追加したいのだが、何か方法はないだろうか?

37 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 11:52:22.55 ID:Rj5My/0A.net]
>>36
haddock-deps: true
でいけると思う

38 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 13:02:10.06 ID:bTMqa3aS.net]
>>37
ありがと、できた。

少し前に stack build --help でオプション一覧を見たはずなんだが、
ボケてたのか、すっかり見逃してたみたい。

39 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 13:29:53.85 ID:bTMqa3aS.net]
>>37
できたと思ったら勘違いだった。

プロジェクト内の .stack-work にはドキュメントが作られるが、
~/.stack/snaoshots 内のドキュメントには融合されない。

40 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 23:24:33.24 ID:pbRX6RFT.net]
>>27
プロジェクトオイラーあたりに取り組んでみるとか
アルゴリズム系で骨のある課題がお望みなら「珠玉のアルゴリズムデザイン」をどうぞ



41 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 23:51:49.78 ID:Rj5My/0A.net]
>>39
うーん、調べてみたけどわからなかった。
stack build --exec CMD でビルド後にドキュメントをコピーするか
stack build --haddock-arguments ARGS でstackからhaddockに渡るパスを上書きするとか
そういうのは思いついたけど、どっちにしても厳しいハックになると思う。

42 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 02:31:21.87 ID:/vT6BoNb.net]
なんでStringってshowするときに” “ が付くの?
ダブルクォートが付かない汎用的なshowは無いの?

43 名前:デフォルトの名無しさん [2017/01/22(日) 06:46:55.70 ID:0MfM9wAO.net]
show使わなきゃいいだけじゃね

44 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 09:49:36.00 ID:DE1XkK5k.net]
>>41
調べてくれて、ありがとう。
こっちでもって調べてみたけど、そもそも同じ悩みを持ってる人が見当たらない。

とりあえず今回は諦めて保留にするよ。

45 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 11:16:36.00 ID:8a05MHn2.net]
実用上全く考えたこともなかったけど
show "ABC"
って
"\"ABC\""
って出力されるんだなwwwwウケる

show $ show "ABC"

"\"\"ABC\"\""

wwwwwwwwwww

46 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 12:04:32.12 ID:+cEF+CqT.net]
>>42
show 2 と show "2" が区別できないと困るじゃん

47 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 13:42:11.92 ID:KAhPA/LR.net]
>>42
どうしても欲しいなら作ればいい。

{-# LANGUAGE FlexibleInstances #-}
instance {-# OVERLAPPING #-} Show [Char] where show = id

48 名前:デフォルトの名無しさん [2017/01/22(日) 13:55:33.85 ID:1WETee73.net]
id = read . show にするためだゾ

49 名前:デフォルトの名無しさん [2017/01/22(日) 14:50:30.18 ID:ppe8FoC9.net]
>>19
強いHaskeller先輩「(・・・これC++で提出した方が早いな)」

50 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 18:20:13.46 ID:TMVq9uWR.net]
スペースリークの問題があってまともなコードには使えないというイメージを持ってるんだが
最近はその辺どうなってるのか知ってる?
自分はホームページ出力とかのメモリリークが問題にならないコードにhaskell使ってる
でもスペースリーク解決したらもっと色んなソフト開発に使ってみたい



51 名前:デフォルトの名無しさん [2017/01/22(日) 19:13:53.53 ID:0MfM9wAO.net]
>>49
haskell-masterことtanakhさん!

52 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 20:48:57.10 ID:2pJ85nMW.net]
tanakhさんは最近はHaskellどころか競プロにRustで提出しだしてるよ…
tanakhさんはHaskellを見捨てたんだ…

53 名前:デフォルトの名無しさん [2017/01/22(日) 21:14:58.84 ID:0MfM9wAO.net]
そもそもhaskell-masterと名乗って参加してたのがhaskell使えないTopCoderだったしなtanakhさん

54 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 21:43:58.70 ID:LUcM/+lo.net]
>>50
他の言語なら、いらなくなった変数にnullを代入することがスペースリークの解決策

nullを代入することには問題があるというイメージだったが
むしろ解決策じゃね?というイメージに最近変わった
その変化に貢献したのがHaskellだった

55 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 22:35:32.21 ID:KAhPA/LR.net]
>>50
あなたは何を以てスペースリークが解決されたと見なしてるの?
スペースリークを気にする必要がなくなった=解決なの?
もしそうなら、そんな未来は来ないと思う。

遅延評価を採用している以上、スペースリークは絶対に気にしなければならない。
あるヒープ領域がスペースリークなのかどうか、ランタイムシステムには判断できないんだから。

スペースリークなのかどうかがもっと調べやすくなる未来は来ると思うけどね。

56 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 23:37:17.44 ID:LUcM/+lo.net]
これに関しては遅延評価でも並列処理でも同じこと
処理が終わったらメモリ解放されるが途中で止まったら解放されない問題

57 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 08:47:48.02 ID:z+XsKe69.net]
昨日の50だけど具体的には
n=1000とか先頭で決め打ちしといてコード書くのは大丈夫でも
上限を与えられるようにするとリークするので大きなnを与えられなかったり
配列の読み書きのコードを逐一doブロックに書くのはokだったけど
<<=を使って書いたらスペースリークしたこともあるし
いちいちこれはリークするのかとか考えながらコードはかけないなと思った
haskellでproject euler 200問弱といたけどその間に思ったことだよ
えっこれがリーク?みたいなのがある

>>55
明確なスペースリーク対策のガイドラインができたらかなぁ

>>54
俺はあれはクソコードが、と思ってた
javaならweakreferenceを使うという手があって
だから最近のapiは進歩しててandroidならsetBackgroundDrawableが非推奨になって
setBackgroundをつかえみたいになってるnull代入しなくてよくなってるような

58 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 10:43:46.71 ID:txYt6xvX.net]
>>57
project euler の何番がスペースリークのせいで解きにくかったか思い出せる?
こっちでも検証してみたい。

思い出せないのなら、1番から順にやってみるけど。

59 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 11:25:17.95 ID:z+XsKe69.net]
>>58
さすがにそこまでは覚えてないけど後半はコードにスペースリークがあると
すぐセグメンテーションフォルトする
序盤の問題は時間もスペースも気にせず簡単に解ける問題が多いので
その目的なら100番ぐらいから始めた方がいいよ
1番からだとさくさく進んで楽しいけどね

60 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 12:27:38.51 ID:txYt6xvX.net]
>>59
分かった。
100番以降で、かつサイズが決め打ちできないものをやってみる。



61 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 21:52:59.71 ID:Wt4rS9Jl.net]
Project Eulerでの答えを求めるのには十分でも
HackerRankのProject Euler+の同じ問題でTLEしたりしたことある

62 名前:デフォルトの名無しさん mailto:sage [2017/01/23(月) 22:38:43.36 ID:ibzQibs1.net]
say :: Show s => s -> IO ()
say s = “Say, ++ show s ++ “!!”

print 1234
=> Say, 1234!!

print “Haskell”
=> Say, “Haskell”!!

ああああああああ!!!(ブリブリブリブリュリュリュリュ!!!ブッチチブブブチチチブリリリブブブゥゥゥゥッッッ!!!)

63 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 00:13:24.79 ID:MMtIoejY.net]
Showがどういう意図のものか理解してないで使ってるって話?

melpon.org/wandbox/permlink/qMLLG4dQGoOHcKXe

64 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 11:43:31.36 ID:OsDnSY6Y.net]
showをユーザー定義する権利を与える代わりに「正しい」定義を決める義務がなくなる
というwinwinの関係

65 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 11:53:28.57 ID:GCEfrzc1.net]
法則を満たしてるか静的にチェックする機構をコンパイラに実装することは理論上

@不可能
A可能(だが現実には困難)
B可能(で鋭意開発中)
C

66 名前:デフォルトの名無しさん mailto:sage [2017/01/24(火) 12:06:44.09 ID:OsDnSY6Y.net]
法則ではなくユーザーの自由意志です

67 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 07:07:08.08 ID:sKR8yojt.net]
instance Show [Char] と書く方法の他に
instance Show Char の中で showList を定義するという方法もある

68 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 08:50:54.03 ID:lcTQYluv.net]
最近Haskellの勉強を始めたのですが、
["aa", "bb", f ["cc", "dd"] ] =
["aa", "bb", "cc", "dd"]
となるような関数fはどのように書けるでしょうか
もしくはそのような既存の関数はありますか

69 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 11:12:47.33 ID:CzfVK0w5.net]
>>68 型が合わないのでかけないと思う

70 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 13:24:39.66 ID:lcTQYluv.net]
>>69
やはり書けませんか…
ありがとうございます



71 名前:デフォルトの名無しさん [2017/01/26(木) 16:38:08.74 ID:2yUJ7U50.net]
普通に++での結合じゃアカンのか?

72 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 16:46:28.90 ID:+E0dl1ly.net]
たぶんその前の時点でアプローチがHaskellのやり方じゃないんだろう

73 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 17:04:34.61 ID:CzfVK0w5.net]
スタック型言語なら直接68のやり方は可能だと思う

74 名前:デフォルトの名無しさん [2017/01/26(木) 17:09:08.58 ID:gPJK2FxR.net]
アンパックしたいのか

75 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 17:18:35.09 ID:MclODevV.net]
どういう文脈でそれをしたくなったのか説明してくれれば
うまい代替案が出てくるかもよ

76 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 17:36:01.96 ID:9y5sHdOj.net]
文脈は知らないが応用問題を作ればなんとなくわかる

length ["aa", "bb", f xs]
の値がコンパイル時に定数になることを証明せよ
または定数にならないような関数fを書け

77 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 20:00:55.44 ID:XEk5YWy9.net]
>>76
応用つか全然違う問題じゃないか

78 名前:デフォルトの名無しさん mailto:sage [2017/01/26(木) 21:43:31.09 ID:q6lSzUEJ.net]
68です
単なる興味本位で出来ないものかと頭を捻らせていたもので

79 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 06:04:37.64 ID:gELNspyu.net]
うーん
そもそも、それ許すとバグの温床になるからこその型だしねぇ。。。

80 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 07:51:28.34 ID:6/LCWfy+.net]
Cのプリプロセッサというのを使うというのはどうだろう



81 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 08:14:39.10 ID:Gw4smznt.net]
["a","b"] ++ (id ["c","d"])
あかんの?

82 名前:デフォルトの名無しさん mailto:sage [2017/01/27(金) 08:53:18.21 ID:3bNTd4fp.net]
それを許すと何も面白くない駄作の温床になるからね

83 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 01:14:43.56 ID:fSWa9KDr.net]
Template Haskellの話題ではないのか

84 名前:デフォルトの名無しさん [2017/01/28(土) 03:42:22.11 ID:IY+AilYG.net]
haskellだと簡潔に書けるので
-shared で .dll(in windows), .so(in linux) を作って使っているのですが、
import Data.Text (or Data.List.Split.Internals)等で関数を書くと
.hsのコンパイルはいけるんですが
-shared の時に

85 名前:デフォルトの名無しさん [2017/01/28(土) 03:43:06.88 ID:IY+AilYG.net]
定義されていない参照です, とエラーが出ます。
取り敢えず自分で関数書いてるので問題は無いのですが、haskellの勉強も兼ねて解消したいです。
どなたか教えて頂けないでしょうか

86 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 05:34:16.63 ID:vo7t9bEK.net]
FTPだっけ。あれどうなったか知ってる人いる?
length (4,2) == 1
になっちゃうやつ。

87 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 09:59:41.44 ID:9bw7znio.net]
path パッケージの Path.parseRelDir 関数で、引数に "." や "../" が指定できないのは何故?

"." や "../" って相対パスちゃうの?

88 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 10:15:30.83 ID:fSWa9KDr.net]
> "." や "../" って相対パスちゃうの?

カレントディレクトリからの相対パスだが
そのpathパッケージとやらはカレントディレクトリを認識してるのか?

89 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 16:29:13.45 ID:1e+Xw+ps.net]
重城良国
Haskell 教養としての関数型プログラミング


Richard Bird 他1名
Haskellによる関数プログラミングの思考法


Haskell本が今度二冊も出るみたいですね

90 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 20:17:03.76 ID:9bw7znio.net]
>>88
「カレントディレクトリを認識する」ってのがどういう意味なのか分からんのだが。

たとえば filepath パッケージに System.FilePath があるけど、
こっちのはカレントディレクトリを認識してるって言えるの?



91 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 00:01:01.66 ID:fPEtEvtP.net]
>>87
なんかissueで普通ノーマライズするから不要で、そういうルールだとか言ってるが
その割に/をハードコードしてたり
言ってる意味不明だから使わない方がいいぞこれ

92 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 08:43:35.35 ID:INpmjvgO.net]
>>91
path パッケージのラッパーになってる path-io パッケージは良さそうなんだが、
path の方がそんなんでは、どうもな・・・

アドバイスありがと、止めておくよ。

93 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 08:52:55.32 ID:W0xWcefq.net]
foldrと同じ働きの関数foldr'は

foldr' :: (a -> b -> b) -> b -> [a] -> b
foldr' f v [] = v
foldr' f v (x:xs) = f x (myFoldr f v xs)

で定義できますが、:tで調べるとPreludeのfoldrの型は

foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b

になってます。
foldr'の型宣言を同様に修正するとエラーが出ます。
エラーが出なくするために二行目の空リスト[]を
どう修正したら良いのか分からんとです。

94 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 08:55:53.89 ID:W0xWcefq.net]
訂正
上の myFoldr は foldr' の間違いです。

95 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 09:16:54.72 ID:OhLobWwB.net]
これ見るのはダメなん?
https://hackage.haskell.org/package/base-4.6.0.1/docs/src/Data-Foldable.html#foldr

96 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 13:55:23.65 ID:/KLkodo+.net]
Foldableは単にfoldr出来ますよーってだけの型クラスだから
リストなどのインスタンスを持ってこないと具体的には定義できない
(==) :: Eq a => a -> a -> Bool
だけでは定義しようがないのと同じ

97 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 15:59:36.88 ID:ExFk7aPU.net]
FTPはとっくに取り入れられてた。base 4.8.0から。気付かんかったわ

98 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 13:32:39.96 ID:53XrODAY.net]
stackアップデートできねえぞ
atomでエラーでたぞ
ghciってなんでデフォルト一行なの
勉強用なの?ふつうつかわないの?
atomとそのコマンド、パッケージ選び
Gitって初心者なのに入れるの?
ないとターミナルいれられないんだが
ああめんどい
コマンドプロンプト見にくい
フォントきもい
ターミナル必要なのか
ビルゲイツしね
ターミナルってのないとエディタからコンパイルできないの?
コンパイルなし実行できないの?
ライブラリとはなにか、どこにあるのか
アトムから読めんのか
ライブラリよんで勉強するもんなのか
Windowsのディレクトリなにこれ
ユーザー名フォルダの場所とか意味不明
パスってなに、パスの通し方
こんなんググらせんなよ
よくこんなの考えやがったな

やること多すぎ 時間かかりすぎ
おぼえたくない 時間のムダ
技術じゃなくて雑学だな
自動化しとけまとめとけクソクソうんこ
それでもプログラマか
啓蒙する気ゼロだなほんと

99 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 13:51:05.42 ID:53XrODAY.net]
オブジェクトファイルとインターフェースファイルのこともちゃんとまえもって教えないとダメでしょ
qiitaとか入門云々とかはてなブログとかほんと死ねばいいのよ
なんでもかんでも初心者にググらせてんじゃないよ!

100 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 16:06:50.00 ID:Iw+tyvVU.net]
コンパイラは難しい
昔の古いインタプリタは簡単だった
確率は1/2じゃなくて実際は9割以上が難解な方を選ぶんだろう








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<290KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef