1 ななしのよっしん
2015/10/13(火) 03:00:28 ID: zGVfgrquPR
記事立てです。も書き込んでないのに何故ほんわか推奨テンプレートをつけるしw
といいつつ速釣られてみる。
関数である以上、関数本体がファーストクラスなので名前付き関数は単に変数名前に束縛したものだ、という視点は欲しいであります。今ではC++Javaですらlambdaを持つ時代になって隔世の感あり・・・。

関数は入のみで定まり隠れた状態を持つべきでないとする考え方自体は関数以前からあるんだけど、それを底するとI/Oとかグロバル副作用がどうしようもないやんけ、というのが現代関数とそれ以外を分ける決定的なとこよね。OOPでもローカル変数は静的単一代入に限るとか、フィールドアクセスとその他の処理をきちんと分離するとかを守ると割といい感じのプログラムになる。
👍
高評価
0
👎
低評価
0
2 ななしのよっしん
2015/10/17(土) 13:00:18 ID: h6Z270BeLs
書き込みありがとうございます。いろいろ教えてください。
>何故ほんわか推奨テンプレートをつけるしw
いや、ちまたのブログとか読んでいると必要かなと...w

>名前付き関数は単に変数名前に束縛したものだ、という視点は欲しいであります
ラムダ計算の話をしたいということでしょうか。

>現代関数とそれ以外を分ける決定的なとこよね。
「それ以外」というのが、古典的(?)関数すのか非関数すのかということを確認させていただければと。

>それを底するとI/Oとかグロバル副作用がどうしようもない
この対策が
モナドで分離する: 純関数型言語
限定的に許容する: 関数型言語
プログラマの自性にゆだねる: 非関数型言語
ようなイメージなんですが、ほかに対策方法はあるでしょうか。

> OOPでも~とかを守ると割といい感じのプログラムになる。
これができれば必ずしも関数型プログラミングにこだわらなくてもいいようにも思えるのですが、実際のところどうなんでしょうか。
👍
高評価
0
👎
低評価
0
3 ななしのよっしん
2015/10/17(土) 14:51:34 ID: zGVfgrquPR
>>名前付き関数は単に変数名前に束縛したものだ、という視点は欲しいであります
>ラムダ計算の話をしたいということでしょうか。
変数じゃないですね。関数でした。
ラムダ計算というか、関数オブジェクトファーストクラス性ですかね(相互に関連はしますが)。クロージャ生成なりカリー化なりの関数->関数演算みたいなものが宣言なしに右辺値的に使えて、どこでも必要なら束縛を持ち込める感覚は関数センスだと思います。それを文法として切り出すためのラムダと。

>>現代関数とそれ以外を分ける決定的なとこよね。
>「それ以外」というのが、古典的(?)関数すのか非関数すのかということを確認させていただければと。
自分としては純関数 <> 古典関数+非関数ぐらいのイメージです。
隠れた状態を持つなという発想は確かダイクストラの頃にはもう言われてて、必ずしも関数固有のスローガンではないはずなんですよ。ただあらゆるプログラミングでそれをやるのは現実的じゃないので、文法などで強制するという話にはなりませんでした。ML辺りの古典関数だと「書きにくく」することでなるだけ副作用を閉じ込めるようにはしてると思いますが、それでも全面的に禁止はしてませんしね。

>この対策が~
>ようなイメージなんですが、ほかに対策方法はあるでしょうか。
詳しくは知らないんですが、多分純関数モナドに限らないと思います(cleanはやり方が違うと聞いたことがあるんですけど、使ったことないので)
最近だとC++でもconstexprが付いたことで、部分的な関数要素になったりしてますね。

>> OOPでも~とかを守ると割といい感じのプログラムになる。
>これができれば必ずしも関数型プログラミングにこだわらなくてもいいようにも思えるのですが、実際のところどうなんでしょうか。
というか、これを詰めていくと「関数型プログラミング」という呼ばれるスタイルに近づいていくんじゃないですかね。とはいえ安全のレベルカバーしたい等の要請を考慮すると、文法レベルサポートがあるに越したことはない訳で現代言がそちらに近づいているのは必然的な流れだと思います。
職業プログラマ主観としては、nil値の扱いと再代入への意識なんかは大きいのかな。Swiftのletとか個人的に萌えポイントなんですがw
👍
高評価
0
👎
低評価
0
4 ななしのよっしん
2015/10/17(土) 15:15:46 ID: h6Z270BeLs
>>3
ありがとうございます
ファーストクラス性という専門用を用いるとファーストクラス性の説明が必要になると思い、
>関数オブジェクトファーストクラス
= 関数を数値などと同じように関数に受け渡しすること
としてすでに書いたつもりなのですが、束縛が可という点を強調したほうがよいということでしょうか。

>自分としては純関数 <> 古典関数+非関数ぐらいのイメージです。
現代関数 = 純関数型言語
古典関数 = 非純関数型言語
ということでしょうか。

>これを詰めていくと「関数型プログラミング」という呼ばれるスタイルに近づいていくんじゃないですかね。
これはたぶんそうなんだと思って、関数型言語とは別に当記事を立てました。
👍
高評価
0
👎
低評価
0
5 ななしのよっしん
2015/11/22(日) 10:22:31 ID: q9zoB9M8V+
横からですけどほんわかテンプレはつけない方がいいと思いますよ
注意喚起の他にこの記事は荒れてますよって意味合いもあるので
少なくとも私はこの記事を開いたときギョッとしましたね
本当に荒れてから付ければ良いんじゃないですか?
👍
高評価
0
👎
低評価
0
6 ななしのよっしん
2015/11/22(日) 10:38:28 ID: rd39fpcd7/
SQL がわかれば高階関数も怖くないw
👍
高評価
0
👎
低評価
0
7 ななしのよっしん
2015/11/22(日) 10:56:33 ID: h6Z270BeLs
>>5
>>2でお答えしたとおり、この話題についてのよそでの議論を見てからの結果ですのでさしあたって変更するつもりはありません。あしからずご了承ください。
> ギョッとしましたね
それは仕様です。記事を読むとき、掲示板に書き込むときは、荒れている記事を扱うときの注意と警をもって接していただければと存じます。
👍
高評価
0
👎
低評価
1
8 ななしのよっしん
2017/06/18(日) 01:14:30 ID: vxde946Efh
関数型プログラミング閥で争ってるとか想像しながら掲示板見たらほんわかしてて
👍
高評価
0
👎
低評価
0
9 ななしのよっしん
2019/05/31(金) 20:27:31 ID: OYr5jvVZ+w
日本における関数の第一人者毛の壁さんについても少しは触れてあげて
👍
高評価
0
👎
低評価
0
10 ななしのよっしん
2019/07/16(火) 17:38:55 ID: WL5n1g0ghe
>>7
うーん。も正直「ほんわかレス推奨です」は不要だと思う。
というかこれが原因で荒れることも十分考えられる訳だし。ほんわかレスを推奨してても荒れる時は荒れるので、総合的なリスクを勘案すると、今は除去したほうがいいと思う。

多数決とか採る?
👍
高評価
0
👎
低評価
0
11 ななしのよっしん
2019/07/16(火) 21:40:09 ID: h6Z270BeLs
>>10
関数型プログラミングに関する議論に造詣の深い方か、自治の精に燃えていらっしゃる方かで、こちらとしては違う受け止め方をしますが、後者の方でしたらお引き取り願います。
👍
高評価
0
👎
低評価
1
12 ななしのよっしん
2019/07/22(月) 21:43:37 ID: WL5n1g0ghe
えぇ…ただの意見表明なんだけどこれが「自治の精に燃えている」扱いになるんですかね?
👍
高評価
1
👎
低評価
0
13 ななしのよっしん
2019/09/26(木) 09:46:06 ID: OYr5jvVZ+w
十分なるでしょ
それも今までネットに存在してきた中でも最高レベルのに当てはまる
👍
高評価
0
👎
低評価
1
14 ななしのよっしん
2019/11/07(木) 12:10:02 ID: WL5n1g0ghe
👍
高評価
0
👎
低評価
1
15 ななしのよっしん
2021/05/01(土) 23:52:55 ID: Ec4m+I8/HP
ほしかった情報が結構書いてあり助かった。
取り消し線はギョッとしたけど読了したら納得感あった。

経験則で極イミュータブルにしておくとヒューマンエラー減らせる、というのがあるんで、
その観点から関数型プログラミングのいろんな概念
取っ掛かりなりともつまみ食い読みできたのはありがたい。
👍
高評価
1
👎
低評価
0
16 ななしのよっしん
2021/05/03(月) 12:01:46 ID: h6Z270BeLs
>>15
ありがとうございます
構想・下書きの段階からかなり手間をかけて作った甲斐がありました。
お褒め頂けて嬉しいです。
👍
高評価
1
👎
低評価
0