新次元新発想!新しい文法を作るスレ
■ このスレッドは過去ログ倉庫に格納されています
0001ネタでもいいよ・・・
NGNGただ、はじめから備わってるものでは、面白くないので新しい文法を提案してください。
あの処理がこんな風に書けたら楽だ、みたいなことです。
ちなみに私は先入観の塊と化しているので何も思い浮かびません。
頭の体操みたいな効能もあるかもしれません。
0002デフォルトの名無しさん
NGNG{
文
}
コードを他の実行可能ファイルに埋め込む。
って言うか何でム板に笑点スレが・・・?
0003ヌルポ〜ず
NGNG0004デフォルトの名無しさん
NGNG0005マヂレス
NGNGInteger I = 0;
Repeat(30){
ConsolePrint("test%I", i);
I++;
}
こんな言語きぼーん。
0006デフォルトの名無しさん
NGNG#define Integer INT
#define Repeat( for(int _j = 0;_j <
#define ){ ;_j++){
0007デフォルトの名無しさん
NGNGswitch case文は使用禁止
ifならifで統一しコードの可読性を下げるな。
0008デフォルトの名無しさん
NGNGどんな会社に行ってんだ・・・こいつは。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGウンコ画像が全画面で一瞬だけ表示される
0012デフォルトの名無しさん
NGNGそれはそれで利点は、有るのでは?
まあ、どっちかに統一しても
そんなに意味のあることでは無いのだろうけ・・・
0013デフォルトの名無しさん
NGNGexec();
0014デフォルトの名無しさん
NGNGオブジェクト指向スクリプトを作ってるのですが
x.<(y).if({
//trueの時の処理
},{
//falseの時の処理
})
if文も演算子もすべてメソッド起動の形にしたいのですが
こういうのはありですか? 意見をききたいのですよ
0015デフォルトの名無しさん
NGNGjudgeクラスとかを導入した方が良い予感。
judge.if(BOOL,処理,処理);
とかの方がまだ好感が持てるかなと。個人的には。
0016デフォルトの名無しさん
NGNG>>8を読んでビックらこいたよ。これって一般的な規約だったりするの?
0017デフォルトの名無しさん
NGNGうーん、それだとjudgeクラスには何の意味も無いような…
ifはBooleanオブジェクトのメソッドにしようとおもっていたんですが
0018デフォルトの名無しさん
NGNG//trueの時の処理
},{
//falseの時の処理
})
としてくれるならまだ納得できた。whileとかはどうするの?
0019デフォルトの名無しさん
NGNGなるほど、実は2項演算子というかメソッド起動は
(object message parameters)とする案も自分の中であるんです。
つまり ((((x * x) + (y * y)) + (z * z)) sqrt)で3次元の距離を取得のように
while文は
obj.while( {/*ブロック*/} )
です。終わる時はobjにfalseを入れます
0020デフォルトの名無しさん
NGNGつーかSmalltalkがそもそもif文をメソッドとして実装してるだろ。
002120
NGNG実装→実現
0022デフォルトの名無しさん
NGNGそうですね "新次元新発想"ではなかったですね
0023デフォルトの名無しさん
NGNG残念だったな(ゲラ
0024デフォルトの名無しさん
NGNG内積とか外積とか計算できるやつない?
0025デフォルトの名無しさん
NGNGMathmatica
0026デフォルトの名無しさん
NGNG(5.(4.(3.(2.(1.())))))ではなく(((((().1).2).3).4).5)
ラムダっぽくてグー?
0027デフォルトの名無しさん
NGNG俺は一生かかっても LISPは覚えられないと感じた瞬間。
0028デフォルトの名無しさん
NGNGなるほど!mathematicaで作ってみるか。ゲームだけど…
0029デフォルトの名無しさん
NGNG頑張れよ・・・
0030デフォルトの名無しさん
NGNG内積・外積程度だけなら適当に作ればいいじゃん
別に言語に関係ないじゃん
0031デフォルトの名無しさん
NGNG普通にCかC++でmatrixのライブラリ探したほうがいいような…
0032デフォルトの名無しさん
NGNGLispはそんなに難しくない、というか規則が割と少なく簡単
0033デフォルトの名無しさん
NGNGカーとかクダーとか授業で習ってこんなおもしろそうな言語があるのかと感動したことがある。
これでCGIでも書いてみようか知らん。
0034デフォルトの名無しさん
NGNGLispじゃないけどSchemeは如何?
ttp://www.shiro.dreamhost.com/scheme/gauche/index-j.html
0035デフォルトの名無しさん
NGNGgoto文に替わって、cometo文。
割り込みやメッセージのディスパッチに使う。
どこからともなく飛んでくる便利なラベル。
0036デフォルトの名無しさん
NGNG( ´∀`)< ぬるぽ
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGstring c = "hoge";
vector<pair<string, string>> m;
m.push_back(make_pair("print(string s)", "cout << s << endl"));
class t = CreateClass(c, m);
t.print("逝ってよし");
0041デフォルトの名無しさん
NGNGclass& CreateClass(string classname, vector<string> method);
string c = "hoge";
vector<pair<string, string>> m;
m.push_back(make_pair("print(string s)", "cout << s << endl"));
class T = CreateClass(c, m);
T *abc = new T();
abc->print("逝ってよし");
0042デフォルトの名無しさん
NGNGほんと、C++って読みにくくなったよな。
0043デフォルトの名無しさん
NGNGそうでもないよ
0044デフォルトの名無しさん
NGNG慣れれば読めるよ
慣れにくいからよみにくいって言うかもしれないけど
0045デフォルトの名無しさん
NGNG.hoge
としないとアクセスできないようにすれば
_とかmとか「しらね」で揉めないし、可読性20%UPなのに。
class Barfoo {
int hoge;
void doIt(int hoge) {
if (.hoge>0) {
return doThis(hoge);
} else {
return doThat(hoge);
}
}
0046デフォルトの名無しさん
NGNGCOME FROM なら Intercal にあります。
0047デフォルトの名無しさん
NGNGAPL 系の言語だな。
J 使ってみ。
0048デフォルトの名無しさん
NGNGdefine append=lambda(...)=>
letrec listcat=lambda(x,tail)=>
if pair?(x)then cons(car(x),listcat(cdr(x),tail))else tail in
if pair?(...)then if pair?(cdr(...))then
listcat(car(...),apply(append,cdr(...))) else car(...) else ...;
↓
(define append
(lambda ...
(letrec ((listcat (lambda (x tail) (if (pair? x) (cons (car x) (listcat (cdr x) tail)) tail))))
(if (pair? ...)
(if (pair? (cdr ...)) (listcat (car ...) (apply append (cdr ...))) (car ...))
...))))
0049デフォルトの名無しさん
NGNGクラス → オブジェクトの雛型、変数の型
インターフェース → 変数の型
なんで、役割をすっきりさせて
クラス → オブジェクトの雛型
インターフェース → 変数の型
というようにしてしまうとどうだろうと思ったけど、
あまり利点が思いつかない…
0050デフォルトの名無しさん
NGNGこんな風に。
public static function hoge(int a, int b) {
return a + b:
}
こう書いておくことで、hoge というメソッドが、そのクラスのクラス変数や、
インスタンスのインスタンス変数にアクセスしないことを言語的にはっきり
させることができる。アクセスしたらエラーにする。
このキーワードが指定されているメソッドを使うときには、マルチスレッドでの
同期などに気を使う必要が無い。
こう書くことで、このメソッドが厳密に数学の意味での「関数」(引数として
渡されたものだけによって、戻り値が決定される)だということをあらわせる。
005150
NGNGのところで、思いついた。
0052デフォルトの名無しさん
NGNG全然「新しい文法」じゃないじゃん
0053デフォルトの名無しさん
NGNG20 [10] + 3
30 [20] + 4
40 print [30]
で10が出る。
行番号が変数/メモリ配置を兼ねている。
0054デフォルトの名無しさん
NGNG行数が増えると大変なことになりそうだけど
俺でも作れそうでいい
0055デフォルトの名無しさん
NGNG20 INPUT "カズ イレテ"
30 IF [10] = [20] THEN 40 ELSE 50
40 PRINT "セイカイ"
50 END
0056デフォルトの名無しさん
NGNGsymbol s1, s2;
putsyn("%s:", s1);
putsyn("__ongoto(%e) %s;", ex, s2);
putstatement(blk);
putsyn("goto %s; %s", s1, s2);
}
0057デフォルトの名無しさん
NGNGCに直すと
int _10 = 1 + 2;
int _20 = _10 + 3 ;
int _30 = _20 + 4 ;
int _40 = printf("%d",_30) ;
0058デフォルトの名無しさん
NGNGa(b(c(...)));
と書くのは見ずらいし、ネストが深いと括弧を数えるのが面倒なので、
'<-'という右結合の2項演算子を用意する。
a(b(c(d, e(f))));
は、
a<-b<-(d, e<-f) ;
と書ける。
デメリットは、比較演算子<と単項の-をくっつけて書けない。
(a < - bと a <- bはまったく違う)
自作言語には既に組みこんであるけど、
<-より良さそうな記号ない?
0059デフォルトの名無しさん
NGNG:-)
0060デフォルトの名無しさん
NGNG<= てのはどう?
< も = も 二項演算子だから2つが並ぶことはあり得ない。
006258
NGNG>>58の例に当てはめると
a:-)b:-)c(d, e:-)f) ;
こうなって、なんか読みにくい気がする。
:-だけの方がいいかな。
a:-b:-c(d, e:-f) ;
>>60
既に<= という割と使われる比較演算子(leq)があったりします。
0063デフォルトの名無しさん
NGNG006458
NGNGa^^b^^c(d, e^^f) ;
結構良いですね。
a^^b;
bをaに適用するという意味は薄れるかな。
追加でもう一つ。
<-だけでは関数の引数が複数の場合に使えないので、
<-よりも優先度が高い、/- という補助の2項演算子を用意する。
これも右結合。
例えば、
a(b(c,d(e,f(g,h()))));
は、
a<-b/-c<-d/-e<-f/-g<-h();
の様に書ける。
この演算子の記号もちょっと微妙。
^^にならって、仮に/-を/^とすると、
a^^b/^c^^d/^e^^f/^g^^h();
慣れればokかな。
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG使える型が限定されているならわざわざ無理してswitch文を
使うまでも無い。
修正が容易な構文はsewitchよりもif-else-ifネストだ。
0067デフォルトの名無しさん
NGNG>使える型が限定されているならわざわざ無理してswitch文を使うまでも無い。
?
よくわからないのでコードで示してみて。
0068デフォルトの名無しさん
NGNG>a<-b/-c<-d/-e<-f/-g<-h();
>a^^b/^c^^d/^e^^f/^g^^h();
慣れてもどれがどう対応するのか読みづらいような…
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGAならB、BならAに
0071デフォルトの名無しさん
NGNGMLみたいにって…
MLには既に o という同じことをする演算子があるのに
それは指摘しないのか
007258
NGNGMLにはそんな演算子があったんですか。
それは、引数が複数ある場合はどうなるのかな。
あ、そういやMLの関数は引数が1つだけと聞いたことがあるから、
問題ない?
>>69
呼び出しを後置演算子としての括弧で判断してるので、
今の仕様だとちょっと無理です。
関数自身の値が欲しい時や、変数との区別も必要。
今の仕様では、
func0 /- arg1 /- arg2 <-
func1 <- func2 <- func3 <- func4()
は
func0(arg1,arg2,func1(func2(func3(func4()))))
という意味で、func4()の様な引数無し関数は
voidを渡す方法が無いから、ちょっと不恰好。
確かに括弧をなくせば辻褄が合う気がするんだけど。
0073デフォルトの名無しさん
NGNG{
printf("死ね");
SINE();
}
0074デフォルトの名無しさん
NGNG無限ループネタを今更やられてもなぁ。
0075デフォルトの名無しさん
NGNG参照可能になるような変数があったら便利と思うのはおれだけ?
0076デフォルトの名無しさん
NGNGうん、考えたこともなかった。
0077デフォルトの名無しさん
NGNGEmacs LispのDynamic Scoping(古いLISPに多い)のこと?
007875
NGNG既にあるなら忘れてくれ。
0079デフォルトの名無しさん
NGNG例:char com[16] = "sizeof(com)"; //文を格納する
int size = @com; //"@"で発動する
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNGPascalなら関数のネストが出来るから
そんな感じのコードが書けると思うけど。
ちょっと違うか
0083デフォルトの名無しさん
NGNG藻前ら、もうちょっと勉強汁!
BrainF*ckとか
0084デフォルトの名無しさん
NGNG関数は値を返す、手続きは処理をするとキッチリ分けたい。
0085デフォルトの名無しさん
NGNGcase (3,5,2):
...
break;
case (3,4,1):
...
break;
default:
...
}
0086デフォルトの名無しさん
NGNGswitch {
case( 式1 ) {
}
case( 式2 ) {
}
}
0087デフォルトの名無しさん
NGNGjavaはふつうにできますが。って言うかCでも何も考えなきゃできるでしょう。
0088デフォルトの名無しさん
NGNGif (a){
case(==b){
}
case(!=b){
}
}
0089デフォルトの名無しさん
NGNG文法破綻してないか?
009071
NGNGすまん >>69 のほうが正しい。俺の読み違い。
'<-' って関数合成かと思ったら関数適用の演算子だったのね。
fun1 o fun2 は、fun1(x) と fun2(x) という二つの関数から
fun1(fun2(x)) という関数を返す演算子。
0091デフォルトの名無しさん
NGNG「新しい文法」ならいいんだろう。
面白みも旨みも新鮮さも感じられないが。
0092デフォルトの名無しさん
NGNGi
&&{{{}}}}}}{}{{}{};;;;;;;:
i
とかどうだろう?開発効率一気にあがりそうなんだけど。
0093デフォルトの名無しさん
NGNG何それ? 何に使うの?
0094デフォルトの名無しさん
NGNG宇宙人との交信ですか?
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG画期的な制御構造だと思うがどうだろうか?
for (int i=0; i<100; i++) {
if (func() == NG) break;
func2()
func3()
} nomalExit {
printf("るーぷ100回しました");
} breakExit {
printf("途中でbreakしました。");
}
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG...
while ( hoge ):
...
}
まんなかで、条件判断がしたい…
■ このスレッドは過去ログ倉庫に格納されています