1 とある言語の例外発生(エクセプション)
2009/11/18(水) 22:51:12 ID: 3CJgnrnSlc
マウス適当Haskellマークを書いてみました。orz
Haskellのマーク
タイトル:Haskellのマーク
Twitterで紹介する

2 ななしのよっしん
2010/11/21(日) 16:52:56 ID: xUYT5VhR2s
副作用なしでここまでできるってのがすごい。本当に便利な言
👍
高評価
0
👎
低評価
0
3 ななしのよっしん
2011/06/12(日) 12:19:13 ID: xri0dhzg3I
最近始めたよ
👍
高評価
0
👎
低評価
0
4 ななしのよっしん
2012/05/09(水) 03:29:32 ID: 02HKRuAn0m
>>2
副作用はありますよん。IOモナドさんが隠してくれているのです。

元々の問題は、純関数型言語であるがために既存の変数を変更できないのですよ。

でも入出っていうのは入/出の状態を変更することにあたるわけで、どうしても変更は必要だったのです。

そこで、モナドの性質
・値をデータの中に入れてしまえばモナド則を満たしている以上中身を取り出せない
・入れたままならなんでもできる
っていうのを使って中身を隠蔽しているのです。

そうすれば、入/出だけの世界に変更を閉じ込めることができるので純世界は侵されないってはなしですね。
👍
高評価
0
👎
低評価
0
5 ななしのよっしん
2012/06/03(日) 21:16:42 ID: I/Bh2ERgL9
>>4
HaskellIOモナドを使ってるのと再代入ができないのはあんまり関係ないと思う。
HaskellIOについて抱えてる問題は
プログラム全体で参照透過性を保たなきゃけない
遅延評価のせいで式が評価されるタイミングが定まらない
のふたつで、それを解決するためにモナドを使ってるじゃないのかな。


あと、
>・値をデータの中に入れてしまえばモナド則を満たしている以上中身を取り出せない
>・入れたままならなんでもできる
この二つはモナドの性質としてはあまり適切じゃないかと。

中身を取り出せないのはモナドの性質じゃない。
実際、中身を取り出せるモナドもあるし。

それに、別にモナドに入ってるから出来ることが増えたりしないよ。
むしろ、モナドに包んだままでも中身に対して包んでない時と同じ操作を行えるのがモナドの重要な性質。
👍
高評価
0
👎
低評価
0
6 4
2012/08/02(木) 01:46:36 ID: 02HKRuAn0m
>>5

参照透明を保ったままIO(≒再代入)を行うために状態を持ちながら引っっていくのがIOモナドで、関係はまぁくもないとは思うのです
ちなみに評価の順番はArrow(関数合成)を使っても制御できまして、
これだと並列化もわりと簡単にできるのでモナドよりも楽しい気がするんですけど。

あーそうですね、たしかに別に操作可ではあります
言いたかったのは、モナドは中身を取り出さずに中身をいじれるっていう話です、ごめんなさい
意味上で持って来られないもの(MaybeとかListとか)は操作が認められてないだけで、Identityとかなら普通に取り出せますしね・・・
👍
高評価
0
👎
低評価
0
7 ななしのよっしん
2014/04/12(土) 16:42:47 ID: htVHxpg1SX
上の例,
factorial :: Int -> Int
factorial 0 = 1
factorial n = n*factorial (n-1)
も入れるのはどうだろうか
👍
高評価
0
👎
低評価
0
8 ななしのよっしん
2014/07/21(月) 18:54:19 ID: iRfsxkJIqP
ピュアであろうとするのはいいが、簡単なことをわざと複雑にしてる感がC++に通じてあんまり好きになれない。
Ocamlあたりで妥協した方が良くね?と思う今日この頃。
👍
高評価
0
👎
低評価
0
9 ななしのよっしん
2014/09/14(日) 13:57:16 ID: C43jYURYjV
Rubyで書いてみて、イラっとしたらHaskell
そんな感じの使い分けでで楽しく付き合えてる
👍
高評価
0
👎
低評価
0
10 ななしのよっしん
2018/08/27(月) 04:09:39 ID: YcW5DE5QT4
lambdaがgotoだとよくわかる言
👍
高評価
0
👎
低評価
0
11 ななしのよっしん
2019/03/08(金) 03:34:17 ID: +3ZMGCh92A
一通り使ってみたけど、LISP副作用関数でも何でもござれにどっぷり浸かったにはもはやHaskell理な体にされていた。
👍
高評価
0
👎
低評価
0
12 ななしのよっしん
2019/04/04(木) 16:34:55 ID: yjaPULFG9x
> 日本語でおk

これ昔の話?今は普通日本語文字リテラルに入れられますよね.それともunicode syntaxの話?
👍
高評価
0
👎
低評価
0
13 ななしのよっしん
2019/04/06(土) 06:40:38 ID: 3P0r1zKXp2
>>12
http://foobardam.hatenablog.com/entry/2012/10/22/125452exit
こういったことは現在では起きないのでしょうか。もし言仕様が変わっているのでしたら記述をめたいのでお知らせ下さい。
👍
高評価
0
👎
低評価
0
14 ななしのよっしん
2019/05/25(土) 04:16:59 ID: AV1NNxTdCw
>>8
>>ピュアであろうとするのはいいが、簡単なことをわざと複雑にしてる感がC++に通じてあんまり好きになれない。
これ本当に分かる
さを取る代わりに分かりやすさを捨てる精が好きじゃない
👍
高評価
0
👎
低評価
0
15 ななしのよっしん
2019/12/11(水) 19:38:23 ID: QvZb6XsBdO
> 外部とのやりとりは、にあいたIOモナドという小さなから行う。
というか、「外の世界の中にありますけど?」としている電波少女なのでは……
👍
高評価
0
👎
低評価
0
16 ななしのよっしん
2019/12/12(木) 23:47:48 ID: 3P0r1zKXp2
>>15
そういう見方も出来ますが、擬人化には分かりやすく・しみやすく伝えるという的もあるかと思います。
記事では純関数型言語=状態変更の拒否=入出すら制限=ひきこもりという巷でも見かける批判図式に乗っかってみました。
(IOモナドRealWorldは取り出せないから、「の中」にはないという議論を始めても不毛ですし。)
👍
高評価
0
👎
低評価
0
17 ななしのよっしん
2020/05/29(金) 11:15:16 ID: QvZb6XsBdO
久々読み直したら

「期限が来てからでないと仕事を始めない彼女のことを怠け者(Lazy)と評する(Evaluate)人もいるが、その評価は正格ではない。」

ここに気づいて感心した
👍
高評価
0
👎
低評価
0
18 ななしのよっしん
2020/05/29(金) 20:49:19 ID: 3P0r1zKXp2
>>17
4年間日のを見なかったネタに気づいてくださりありがとうございます
👍
高評価
0
👎
低評価
0
19 ななしのよっしん
2020/05/29(金) 20:58:50 ID: MURMU5O6Sz
的が広くなって良さを失ったElm
👍
高評価
0
👎
低評価
0
20 ななしのよっしん
2020/06/07(日) 23:12:35 ID: AV1NNxTdCw
Haskell自体は面い言だけどこれで実際のサービス書くのは
IDE周りがほとんど整備されておらず、開発環境の構築からして既に厳しい(haskell-ide-engineもピーキーすぎてすぐ止まる)
ビルドも工夫しないと気で1h以上かかる
名前衝突の問題などレコードフィールド周りが微妙(言もあるとはいえ限度がある)
エコシステムや言としての使いやすさに興味のない、圏論オタクアカデミアの民だけが細々と持ち上げてるイメージ
👍
高評価
0
👎
低評価
0
21 ななしのよっしん
2020/06/22(月) 00:26:28 ID: d8tCRxstDd
プログラミング初心者Haskellを学ぶにはどうすればいいの?
すごいH本はあるけど読んでも意味が分からない
👍
高評価
0
👎
低評価
0
22 ななしのよっしん
2020/06/22(月) 06:21:10 ID: 3P0r1zKXp2
>>21
Haskellを投げ出した自分が答えるべきではないのかもしれないですが、どうしてHaskellを学びたいのかと、どれくらい労を投入できるかによると思います。
プログラミング言語選択ガイドの記事にも持論を書きましたが>>21から推測されるレベルだと、大抵の場合はあきらめて他の言にした方がいいです。

どうしてもHaskellが必要で、いくらでも(〜年単位で)時間をかけられるなら、IOモナドとdo記法だらけの汚いコードでもいいからとりあえず書いてみて、それをきれいにするにはどうすればいいかを考えるという行為を繰り返すと慣れてくることがあるかもしれないとは思います。
どの程度のレベルまで到達できるかの上限は本人の(抽論・明系の)数学依存します。

とはいえHaskellを投げ出した人の発言なので、みにはしないでください。大事なことなので(ry
👍
高評価
0
👎
低評価
0
23 ななしのよっしん
2020/06/25(木) 01:11:02 ID: d8tCRxstDd
>>22
ほかの言を習得することが一番の近みたいですね
どうもありがとうございました
👍
高評価
0
👎
低評価
0
24 ななしのよっしん
2020/06/25(木) 01:18:15 ID: wmwzvf/uNo
数学を極めた実戦級プログラマーにはHaskellが最高に良いらしいね
理論通りにバグのないコードを組めて予測通りに動くからとか
しかし圏論の手法を手足のように使える人でないと黒魔術過ぎるから初心者が手を出す代物じゃないと思う
👍
高評価
0
👎
低評価
0
25 ななしのよっしん
2020/06/30(火) 15:45:32 ID: AV1NNxTdCw
すごいH本がよく勧められるのは、ひとえに入門者向けの適切な本が他にない時代が長かったから
あの本は「細かい事は抜きにしてとりあえずHaskell空気を浴びてみよう」みたいなテイストだし、言うほど易しくないし、そもそも今では内容古いし、
他言の経験があるなら積極的にはオススメしない
今だったら『入門Haskellプログラミング』辺りがベターかと
正銘のプログラミング初心者なら多分すごいH本以外に適切な本はないと思う

すごいH本の説明だと今ひとつピンと来ないって人は結構いるんだけど、
Haskellプロって大体すごいH本でHaskellに慣れるというルートを通っているから、
あれで理解できない人をどう教えたら良いのか分からないらしいんだよね
👍
高評価
0
👎
低評価
0
26 ななしのよっしん
2020/10/25(日) 14:35:40 ID: D3Cj3y/Qv1
すごいHは初めてプログラミングを学ぶ人にはいいが、
既に経験があってHaskellを追加で学びたい人はHaskell入門がいいって意見を見たことがある

でも、すごいHはどう見てもオブジェクト指向をある程度習得していることが前提の言い回しが多いよな・・・
👍
高評価
0
👎
低評価
0
27 ななしのよっしん
2020/11/25(水) 00:27:52 ID: 33s8SncGg0
haskellコーディングするのくっそ楽しい
コンパイル通ったあとの安心感は異常
遅延評価が原因のパフォーマンスチューニングは地獄と聞く)
でも慣れるまでに較的時間がかかってサクサク書けないのがつらい
てかごく普通の人で仕事で使ってる人どいないと思う(偏見
👍
高評価
0
👎
低評価
0
28 ななしのよっしん
2021/02/18(木) 00:03:06 ID: wmwzvf/uNo
仕事で使ってる人のブログのよるとhaskell以外の言での仕事はあり得ないくらいにイイモノらしい
そのレベルで使いこなせる人は普通の人じゃないけどね
👍
高評価
0
👎
低評価
0
29 ななしのよっしん
2021/05/23(日) 03:10:18 ID: 8IbiZXUzPt
Haskellから受ける、ただでさえ陰キャの多いプログラミングの中でひと際立つキモオタがブヒつきながら触っていそうという印は間違っていない。
その上で、別に数学を極めてなくても使えるし、Haskellコミュニティには優しく教えてくれるおじさんがたくさんいるのでもっと気軽に入門して欲しいということを宣伝しておきたい。
https://haskell.jp/exit
👍
高評価
0
👎
低評価
0
30 ななしのよっしん
2021/08/27(金) 02:13:45 ID: yjaPULFG9x
> 日本語でおk
ここおかしくね?
自分は文字リテラル内部でもソースコードでも(日本語特有のの概念(ガ格とか)を使うので)日本語使ってるけど支障ないぞ。
Haskell 2010以前の話かな?
👍
高評価
0
👎
低評価
0