一番強いswitch文ってどの言語?

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
VB > C言語

これだけは確実。
2デフォルトの名無しさん:2012/05/31(木) 02:09:46.11
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
3デフォルトの名無しさん:2012/05/31(木) 02:14:46.49
関数型言語でパターンマッチという言葉がでてきた

なにかと思ったらただのswitch文だったでござる。
4デフォルトの名無しさん:2012/05/31(木) 06:47:12.14
パターンマッチは変数束縛。

ADTが無い劣った言語しか使った事が無いPGが
自分の知ってる言語機能に対応づけて理解しようとする(アホの典型的行動)と
switch文に見えるかもな。
5デフォルトの名無しさん:2012/05/31(木) 08:42:38.87
じゃあ、switch+変数束縛ってことで。
6デフォルトの名無しさん:2012/05/31(木) 08:45:52.45
Prolog
7デフォルトの名無しさん:2012/05/31(木) 08:50:04.95
>>6
引数0以外の述語は全部switch文か!
8デフォルトの名無しさん:2012/05/31(木) 17:20:39.39
Prologのユニフィケーションが最強。異論は認めない
9デフォルトの名無しさん:2012/05/31(木) 17:39:41.94
JavaScript
10デフォルトの名無しさん:2012/05/31(木) 21:17:15.23
Tclのは正規表現が使える。
11デフォルトの名無しさん:2012/05/31(木) 22:11:47.86
>>8
switchという観点だけでいうと、PrologのそれにはHaskellも
遠く及ばない。
単項のswitchばかりでなく、複合的なもの、変数に置いてルールで
解決してから評価するもの。値を自在に引数から返すこと。
値を生成しながら返すもの。一度解決した値を別に置き換えてから
実行し直すこと。考えられるほとんどすべてのことが可能。
12デフォルトの名無しさん:2012/06/01(金) 01:24:42.82
nilアクセスをラップしてから使うmethod呼び出しであればsmalltalkが最強
13uy:2012/06/01(金) 04:50:35.98
マジレスすると
switch文は冗長だろ

IFかイテレータでかく頭がない or IF や イテレータでまとめると後から自分が理解できなくなる
からswithcでだらだら行数ふくらませて書くしかないんだよ

プログラミングでいらねー概念その1
14デフォルトの名無しさん:2012/06/01(金) 11:36:48.63
Scalaだとこんなかんじ
sealed abstract class Exp()
case class Add(a:Exp,b:Exp) extends Exp
case class Mul(a:Exp,b:Exp) extends Exp
case class Val(a:Int) extends Exp
def eval(e:Exp):Int = {
 e match {
  case Val(x)=>x
  case Add(x,y)=>eval(x)+eval(y)
  case Mul(x,y)=>eval(x)*eval(y)
 }
}
println(eval(Add(Val(1),Mul(Val(2),Val(3)))))
15デフォルトの名無しさん:2012/06/01(金) 11:42:26.29
場合分けはメソッドディスパッチで、というのが最近の流行ではあるか
16デフォルトの名無しさん:2012/06/01(金) 12:26:11.99
うん
17デフォルトの名無しさん:2012/06/01(金) 15:28:19.15
>>15-16
デザパタ覚えたてのストラテジ厨の予感。
18デフォルトの名無しさん:2012/06/02(土) 08:10:38.75
Pascalのcase文 書きにくくてかなわん。
19デフォルトの名無しさん:2012/06/02(土) 18:40:29.85
>>17
俺には >>15 は、デザパタ飽きたって人の発言に見える。
「流行」という表現には「そのうち廃る」という意味を微妙に内包するからね。
20デフォルトの名無しさん:2012/06/03(日) 00:31:12.67
>>19
よう>>15
図星だったか?www
21デフォルトの名無しさん:2012/06/03(日) 09:28:18.45
>>20
いや、違うが気持ちは解るからな
メソッドディスパッチも流行に過ぎないのではないか、という気持ちは

ところで、switchと言えば何気にCOBOLのEVALUATE〜WHENが
無駄に複雑な仕様で興味深い

…と言うか
THRUの仕様や、EVALUATE側にTRUE書いてWHEN側に条件式までは使いそうだが
ALSO、ANYとか実際のCOBOLerさんたちは使うのだろうか
22デフォルトの名無しさん:2012/06/03(日) 10:38:32.15
やっぱ時代はCOME FROM文だろ?
23デフォルトの名無しさん:2012/06/03(日) 17:19:01.60
かなりなデシジョンテーブルが一発で書ける仕様だがな、EVALUATEは。
つーかCOBOL全般に強力な機能はたくさんあるけど、
cOBOLerが使えないという理由で使用禁止にしてるとこばかりだw
24デフォルトの名無しさん:2012/06/03(日) 17:39:11.75
>>23
せっかく強力なのに、なんだか勿体ないなあw
25デフォルトの名無しさん:2012/06/03(日) 18:43:18.48
>>23 >>24
このスレ的な結論としては、COBOLerさんたちのskillupには
Prologを勉強させることが一番ということになる。
26デフォルトの名無しさん:2012/06/03(日) 20:08:32.71
昔ALTER文を駆使したソースに当たったよ。まさに動的言語w
27デフォルトの名無しさん:2012/07/05(木) 07:45:18.45
いっそ世の中のブロック構造はすべて関数にしてしまえばいいんじゃね?
28デフォルトの名無しさん:2012/07/05(木) 09:52:48.94
>>27
Tclが結構それに近い考え方じゃね?
29デフォルトの名無しさん:2012/08/15(水) 02:10:47.14
>>13
>マジレスすると
>プログラミングでいらねー概念その1

概念その1、、、恥ずかしくないのか?www


30デフォルトの名無しさん:2012/08/15(水) 02:14:39.77
二ヵ月半も前のレスにわざわざ書いてる奴の方が…
31デフォルトの名無しさん:2012/08/15(水) 02:39:59.78
お、俺は恥ずかしくねーよw
32デフォルトの名無しさん:2012/08/15(水) 04:00:58.42
ああ、恥ずかしいのは俺だ!
33デフォルトの名無しさん:2012/08/15(水) 04:03:46.01
いや俺だろ
34デフォルトの名無しさん:2012/08/15(水) 21:39:28.63
switch文でもプログラミング言語でもないが、verilogのcase文はなかなかおもしろいぞ。
ラベルに信号(変数みたいなもん)を入れることができる
http://natu.txt-nifty.com/natsutan/2008/03/verilogcase_6271.html
35デフォルトの名無しさん:2012/08/15(水) 21:59:40.14
それは、その構文がverilogで役に立つケースが少なくないからそうなってるわけで、
verilogの世界では理にかなっているとは思うが、面白さが分からない。

特徴的ではあるが、では C/C++ や Java、Ruby や Python、Haskell などにも
是非取り入れてほしいと思うかと言われると、べつに要らんと思うだろうし。
36デフォルトの名無しさん:2012/08/16(木) 07:54:53.90
>>34
VB6 でも余裕ですが…
37デフォルトの名無しさん:2012/08/16(木) 23:44:24.06
PowerShell

ていうか、構文じゃなくて言語機能の話だな。
38デフォルトの名無しさん:2012/08/31(金) 17:01:07.91
最強なのはやはり、
指標部分で単一化という強力なパターンマッチッングできて、節がOR関係で
順に実行されて、本体部分の記述が強力で値を自由に複数返すことのできる
Prologの述語ではなかろうか
39デフォルトの名無しさん:2012/08/31(金) 17:27:02.71
ラダーチャート最強。
40デフォルトの名無しさん
COBOLが最強ということで。