【Python】オフサイドルール 2桁【Haskell】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
オフサイドルール(字下げによってブロックを示す規則)について議論するスレです。
もちろんタイトルにないプログラミング言語のオフサイドルールの話も歓迎します。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%95%E3%82%B5%E3%82%A4%E3%83%89%E3%83%AB%E3%83%BC%E3%83%AB

前スレ
Pythonに見られるインデントによる制御構造の是非
http://hibari.2ch.net/test/read.cgi/tech/1169473442/
2デフォルトの名無しさん:2011/07/14(木) 23:44:53.90
経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた
http://d.hatena.ne.jp/camlspotter/20101212/1292165692
>Offside rule は何もいいこと無い
> 百害あって、一利あるか、どうか。
> インデントでプログラムの意味が変わる offside rule はいらないですよ。
3デフォルトの名無しさん:2011/07/15(金) 08:49:09.36
> インデントでプログラムの意味が変わる offside rule はいらないですよ。

実際使ってみると気にならないレベルだとわかる
いらんと言う香具師は素人
4デフォルトの名無しさん:2011/07/15(金) 10:08:25.25
うざい中括弧が基本的にいらない言語だよね。<Python,Haskell
いいと思うよ。中括弧見てるとCやJavaの腐ったもんって感じがするもん。
後、オフサイドルール故に、可読性が〜とよくいわれるけど
そのとおりだと思うよ。一部アルゴリズムの本にPythonを採用してる動き
があるのはよく分かる。
5デフォルトの名無しさん:2011/07/15(金) 10:12:20.08
単に、気になる・ならないという個人の気分的なレベルの話だったの?

前スレではメリットとデメリットが具体的な形で挙ってたと思うけど
6デフォルトの名無しさん:2011/07/15(金) 10:48:52.57
最終的にはその具体的な(デ)メリットをどう判断するかということだから、じゃないの?
7デフォルトの名無しさん:2011/07/15(金) 11:20:54.64
スレタイから「制御構造の是非」取れちゃったからなぁ
8デフォルトの名無しさん:2011/07/15(金) 11:25:34.81
制御構造ってのは抽象のことであって、
オフサイドルールは具象だから、「是非」はともかく「制御構造の」は当たっていない。
9デフォルトの名無しさん:2011/07/15(金) 12:37:09.44
オフサイドルールが貧弱だと、横に長い文ができやすいのが気に入らない。
見辛いコードがすなわち悪い構造のコードだって言い切れるのなら、オフサイドルールにメリットがあると言えるんだけど、
(if文がネストしまくるのは悪いこと、とか)そうでもない場合もあって困る。
pythonのルールはまだいいかもしれんが、haskellのコードはそうでもない、ってのが印象。
10デフォルトの名無しさん:2011/07/15(金) 14:18:12.20
>>8
ブロックは逐次実行という制御構造です。
11デフォルトの名無しさん:2011/07/15(金) 15:19:38.44
インデントの深さ方向もだけど
一つのブロックが何行にも渉って延々と続くのも考え物
途中でインデントの深さが判らなくなってしまう
(特に印刷物でソースが複数ページにまたがる場合)
12デフォルトの名無しさん:2011/07/15(金) 16:03:48.83
>>10 ブロック(複文)は、文を順番に並べてまとめたものという抽象構文のレベルのものです。
それを、逐次実行する、というのは意味のレベルです。
それを、字下げで表現する、というのは具象構文のレベルです。

これらをごっちゃにするのは、HTTPとIPをごっちゃにするようなものです。
13デフォルトの名無しさん:2011/07/15(金) 16:17:12.71
逐次実行というsemanticsを表現するためのsyntaxがブロックなのです。
「syntaxとsemantics」という初歩も理解してないのですね。
14デフォルトの名無しさん:2011/07/15(金) 19:16:08.21
もともと行儀の悪い書き方をしてきた人や
スペースをタブにしてしまうエディタを使ってる人は
オフサイドルールがうっとおしいと思う
オフサイドルールがあるときれいに書こうという気になる
15デフォルトの名無しさん:2011/07/15(金) 19:19:18.22
ブロック構文だからといって逐次実行とはかぎらんわな。
並列実行の構文がブロック型をしてる言語だってある。

初歩を理解してないのはどちらですかな?
16デフォルトの名無しさん:2011/07/16(土) 01:17:57.23
>>6
・個人の感想
・事実の積み重ね

意味合いが全然違いますから
17デフォルトの名無しさん:2011/07/16(土) 01:29:44.42
>>14
残念ながら、全てを奇麗に書き下せる究極の言語はまだこの世に生まれてないんだ
汚れ仕事にも文句を言わずに付き合ってくれる言語じゃないと信頼関係は生まれないね
18デフォルトの名無しさん:2011/07/16(土) 04:07:21.22
GNUスタイルのインデントは嫌い
19デフォルトの名無しさん:2011/07/16(土) 06:17:13.08
制御構造の { と } が2桁ずれるんよな
while(expr)
  {
    statements;
  }
statements;
20デフォルトの名無しさん:2011/07/16(土) 07:11:18.39
>>16 それで何がしたいの?
客観的事実をもって徹底的にdisりたいの?

>>18-19
コーディングスタイルのスレは別になかったっけ?
21デフォルトの名無しさん:2011/07/16(土) 09:08:48.03
>>20
技術者なら常に事実を把握しておきたいだろ

disるとかdisられたとか、個人の感想なんかはどうでもいい話
そんな事に拘って事実が見えなくなったら、俺は引退するわ
22デフォルトの名無しさん:2011/07/16(土) 09:43:01.32
事実はそれぞれの文法にある通りでしょ
あとはエディタのサポートとかそういう細々した話

事実について議論することなど何もないと思うが
23デフォルトの名無しさん:2011/07/16(土) 09:46:45.28
その文法を種々のプログラムに適用した場合の効果については自明じゃないと思うけど、
議論する事が何も無いと思うなら議論しなくていいんだよ
24デフォルトの名無しさん:2011/07/16(土) 11:50:14.49
IDEに自動フォーマットさせたら、こんなルールいらない。
25デフォルトの名無しさん:2011/07/16(土) 13:01:20.62
原因と結果を取り違えるタイプの人はプログラム書くのには向いていない
26デフォルトの名無しさん:2011/07/16(土) 18:44:37.91
iDE前提では、魅力ない。
27デフォルトの名無しさん:2011/07/17(日) 13:47:22.42
>>9
むしろpythonのループには何かしらbegin-end的な物が欲しいとか思うんだよな。。。何か極端過ぎと言うか
(ループされる処理の塊がまとまってると言うより、ぶら下がって見えるのが)

haskellはループ無いからインデントに違和感無かった

有った方が良いとか、無かった方が良いかはどうでも良いけど

28デフォルトの名無しさん:2011/07/17(日) 14:41:01.00
いみふ
29デフォルトの名無しさん:2011/07/23(土) 17:40:51.15
やっぱいらんかったんやこのスレ...
30デフォルトの名無しさん:2011/09/06(火) 10:28:24.31
あげ
31デフォルトの名無しさん:2011/09/06(火) 12:49:37.37
スレタイがキャッチャーじゃないから食いつきが悪いね。
前のスレタイなら初心者でも理解できたし。
32デフォルトの名無しさん:2011/09/06(火) 15:46:24.78
プログラムVIP板
33デフォルトの名無しさん:2011/09/06(火) 19:06:20.36
キャッチャー?
34デフォルトの名無しさん:2011/09/06(火) 19:07:22.16
キャッチョー?
35デフォルトの名無しさん:2011/09/06(火) 19:08:07.52
ピッチャーだろ
36デフォルトの名無しさん:2011/09/15(木) 12:52:05.82
>>29
今は Henry Kroll III 氏の Anchor のようなものがあり、
どっちのスタイルにも変換できるからイラネだな。

しかしこういった議論が起きるということからブロック構造を構文の
一種として意識して記述させるというのは今となっては不自然なのかもしれないな。

37デフォルトの名無しさん:2011/09/15(木) 13:31:48.90
プログラミング言語の構造を、構文でなく記述するってどういうこと?
遅延評価や高階関数や継続を駆使して、制御構造をライブラリで表現できるように
(ifとかwhileとかを、文ではなくて全部関数に)するのが自然ってこと?
38デフォルトの名無しさん:2011/09/15(木) 14:43:21.08
桁を意識するのはFORTRANからの伝統。
パンチカードの正当な継承者。
39デフォルトの名無しさん:2011/09/15(木) 15:23:32.16
7カラム目に特別な記号を置いたりするのはむしろCOBOLだろ
40デフォルトの名無しさん:2011/09/15(木) 15:25:15.36
41デフォルトの名無しさん:2011/09/17(土) 17:57:17.61
>>37
そこまで逝ってないが言えば頭大丈夫?ってくらい単純な方法。
今は大人の地蔵でいえないが生きていればどこか日の目を見るかもね。
42デフォルトの名無しさん:2011/09/17(土) 18:16:27.18
できるだけ早く病院行け
43デフォルトの名無しさん:2011/09/25(日) 10:50:48.51
Python?Haskell? どっちももガキの好きそうな優しい言語だな。
ナゼこのスレで Occam が話題にならんの?(悪いが過去スレは知らん)

An Introduction to the occam Language
http://frmb.org/occtutor.html
44デフォルトの名無しさん:2011/09/25(日) 12:31:23.29
まあ、元々Pythonのオフサイドルールの是非を問うスレだったからな
今後色んな言語を追加していけばいいと思うぜ
45デフォルトの名無しさん:2011/11/10(木) 23:19:25.93
オフサイドルールについて何を話せばいいんだよw
46デフォルトの名無しさん:2011/11/12(土) 18:46:18.79
文句言ってる香具師は大抵Python使ってない
食わず嫌い
実際使ってみれば全然問題にならないレベル
かえってソースが綺麗になって嬉しいくらい
47デフォルトの名無しさん:2011/11/27(日) 11:00:58.75
IDE使えばどの言語も同じ。
48デフォルトの名無しさん:2011/11/27(日) 11:56:19.64
中括弧派だがオフサイドルールのいい点を取り込む仕様を考えた
A()
{
doSomething();
return A;
return B;
}



A(){
doSomething();
return A;
return B; }

下のように記法してなおかつ return; と } の間に目に見えない改行を挟む
これでvimのddで return B; だけ消せる
49デフォルトの名無しさん:2011/11/27(日) 13:18:11.81
その代わりvimの%によるカッコの対応付けはくずれるけどねw
50デフォルトの名無しさん:2011/11/27(日) 17:52:17.42
え、なんで?
5149:2011/11/27(日) 18:21:13.76
>>50
あ、俺の勘違いだ、ゴメソ
52デフォルトの名無しさん
>>46
いまどき香具師とか。。。