トップページ⇒tech
1001コメント245KB

D言語 Part13

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2007/04/25(水) 20:18:44
プログラミング言語 D について語るスレッドです。
過去スレは >>2

■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
ttp://www.sun-inet.or.jp/~yaneurao/dlang/
ttp://wisdom.sakura.ne.jp/programming/d/
0002デフォルトの名無しさん2007/04/25(水) 20:19:17
■過去スレ
Part12 http://pc11.2ch.net/test/read.cgi/tech/1171037394/
Part11 http://pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 http://pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん2007/04/25(水) 20:29:49
    ',         ./:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::_ハ_,,. -┐  /      /
     ',   ___,,.へ./:::::::/\:::::::::::::__::::::::::::::::::::_;;:-‐''"     |_____    / 
     ',  「     `` ヽ、_ハ-'ァ´ ハ⌒ヽ-''"  _,,.         / /
      rソ     \__  >''`'ー---─'--<   _;:イ___    /  _,、∧/
\     く   >'"::;:- '"´ ̄`ヽ、::::-─- '"´ ̄ `ヽ、:::::::::`"'<  「  
       ノ>'"_:;ア´                    ヽ、::::::::::::<
    _,,.:::''":::::ア´ /  , '´   /     i    ',    i    Y:::::::::::::_;> 嫌 何
..,,_ く;::::::::::::::/  /  /   i. 、,'  ハ  ,ハ   ,i   ハ_   iヽ;__;;;:::::>   い が
    `ヽ、::::ノ  ,'  .i   ハ  i\/ ', / i  / i ,.イ´./i   !  i /   .か
_____   ,,.イ   i   i  ./ ァ'" ̄`ヽー/  | /,ァ''" ̄`ヽハ  ハ ∠_    よ
    ∧ '" /| ノ ,ハイ   i'´'`i     レ'  i'´'`i.   ト| / i  ヽ7   り
\∧/  Vi/  |_,. -‐ァi/    !__,リ          !__,リ   ' レ'_ン  i /へ
            / |   `'' ー-         -‐ ''´  i ハ'   ハ   i\/V\/
    自  何  ∠,ハ ""       `       ""〈 ,.イ ./ !    ',  ---─
    分  が   /从   /´ ̄`' ー--‐ '"´ ̄`ヽ   ハ ノ /‐ 、'    ヽ.
    を.   好   /_ ,.へ. i `'' ー- ー─-‐‐ ''" i ,.イ人iハr'   ヽ、. ヽ. ', - ..,,__
    語  き   /|  .ノヽ、r'´        ``ン'7 i ノ       ヽ. ヘ/
    れ  か  く  |/ i::::::`i>.、.,,_______,,.. イ:::::::iヽへi        Y   \
    よ  で    >  ,イ::::::::::|ヽ、.,____l_」___,.イi::::::::>-く         | ',   \
    !!!      <  |/:::::::::::|_____  |o|   __rへi_ン-‐ァ    _r'-イ> ',
0004デフォルトの名無しさん2007/04/25(水) 20:32:31
関連スレ

D言語なら俺に聞け
http://pc11.2ch.net/test/read.cgi/tech/1108172110/

D言語を広めるスレ
http://pc11.2ch.net/test/read.cgi/tech/1175432606/

D言語は多分コケると思っている人の数→
http://pc11.2ch.net/test/read.cgi/tech/1136288019/

【次世代言語】D言語でOSを作ろう【Monaの移植?】
http://pc11.2ch.net/test/read.cgi/tech/1128794438/

バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/

その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/

eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/

統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/

"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0005デフォルトの名無しさん2007/04/25(水) 20:45:05
前スレに貼られていたリンクなど

ttp://www.digitalmars.com/download/freecompiler.html
ttp://ddbg.mainia.de/
ttp://video.google.com/videoplay?docid=-7073020265668105471
ttp://d.puremagic.com/issues/
ttp://www.kmonos.net/alang/d/overview.html
ttp://www.kmonos.net/alang/d/struct.html
ttp://www.kmonos.net/alang/wnd/topics/winapi.ja.html
ttp://www.kmonos.net/alang/wnd/topics/flectioned.ja.html
ttp://www.kmonos.net/alang/wnd/topics/pitfall.ja.html#mojibake
ttp://www.kmonos.net/alang/wnd/devenv.ja.html#ide
ttp://shinh.skr.jp/d/bogoyaml.html
ttp://www.prowiki.org/wiki4d/wiki.cgi?AllLibraries/XmlLibraries
ttp://www.dsource.org/projects/mango/browser/branches/v2.1/mango/xml
ttp://www.dsource.org/projects/tango/browser/trunk?rev=1236
ttp://www.dprogramming.com/entice.php
ttp://www.dsource.org/projects/tango/wiki/ChapterThreading
ttp://d.hatena.ne.jp/shinichiro_h/searchdiary?word=%2a%5bD%5d
ttp://ja.wikipedia.org/wiki/Z%E8%A8%80%E8%AA%9E
ttp://www.wikiroom.com/sakurai/index.php?FrontPage
ttp://forums.codeblocks.org/index.php?board=20.0
ttp://www.google.co.jp/search?q=D%E8%A8%80%E8%AA%9E
ttp://www.javaroad.jp/java_exception3.htm
0006デフォルトの名無しさん2007/04/25(水) 20:47:31
乙
0007デフォルトの名無しさん2007/04/25(水) 21:59:23
キタ━━(゚∀゚)━━!!!!
     (i_i)
     しJ
0008デフォルトの名無しさん2007/04/25(水) 22:09:26
 。  + 『新スレ ぃ ゃ っ ほ ぉ ぉ ぉ ぅ ー !』    *     。       .
                 .             *        .
       *      + 。           。     +
           __   _     /ヾ_/ヽ        旦
        f ミv'´{ごづヾ彡   , '´⌒'v'ヾ      '´ ̄`ヽ       *     。
        ゙i´!(((从 从リ !   ifi」liリ゙l i!卯、   (((/从从 i
         !○(l ^ヮ゚ノ!| i * |i、゚ヮ^ |!)○゙ 。  从゚- ゚ ||○  *
        ノノ ヽ)本iO ヾ   Oi本(~/ヽ    OL介_(ノ  .      +
  ガタン||| ((´ く/_i_iヾ  )) ||| /i_i_ヾ> ) )) ||| + /_|_|ヾ> |||ガタン +
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ロ リ 絶 賛 ! >>1 の ス レ 立 て に 超 感 動 !
0009デフォルトの名無しさん2007/04/25(水) 22:28:51
              /: : : : : : : : : : : : : : : : : `丶、
               / : : : : : : : : ‐- : :、: : : : :ヽ: : : : \
              {  ̄: : : : : : : : : : : : : : :ヽ、: : : ヘ: : : : : ヽ
              ,.ヘ: : : : : : : `丶 : : : : : : : : `く/ ヘ: : : : : :',
          /: : ヽ: : \: : : : : \: : -―: : : :`く: : '.,: : : : :l
          ,': {: : : \: : :ヽ、: : : : :\ー‐、: : : :ヽ:\: ヽ : : :|
            l: :l : : : l \: : : \‐=V弋芝圷\: \l\l : : :|
            |: :l: :: : {xく´_\`ヽ:ヽ   Vヘソ  |: : |: : }: :./i
          l: :l:ヽ : ヽ仗圦  \    ゞ''´   ノ: /l: :ハ/    、ノN
         ヽヘ: :\ ヽVヘ:}       //  j/-j/ 乂    ノ: :j    >>1乙
          丶\: ヽ: ゞ'' 、             ハ! : : :ヽj、_,ヘヘi彡'
             `ヘ>    - '     / V廴V-へ∠`´__
                   ヽ、_         /   ヽ/ ̄/ '⌒ヽ `丶
                 \ミ、ー:- -イ    / / /    ヽ  \
                   ヽ:八{\少}     / / /         ∨  \
                   '′_>' /’ __,/ / /           |    \
                      ,イ   /、 ´/ /´          |      \
                  /l│  / __/   /   /        |     /
                    /│|  /V /   /  /        |    _/
                 ││{  / /V /  r'´         ノ¨ ̄´
                 | ヘ ∨ ∨ ̄ ̄/  }         /
0010デフォルトの名無しさん2007/04/26(木) 10:48:21
Dの利用者ってロリヲタばっかりなん?
0011デフォルトの名無しさん2007/04/26(木) 12:44:06
D言語は未熟だから良いのです。
0012デフォルトの名無しさん2007/04/27(金) 04:39:05
                     /.::::;: -''´..:::,. -−- 、:::_\
                /.::::/..::::::,ィ ´.:::::::::::::::::::::::.....`ヾ、
                 , ′::/.:::::::::〃.::::::::::::::::::::::::::::::::::::::.....ヽ
               /.::::::/.:::::::::::://:::,、::::::::,:::::,、::,::::i:::::::::::::::::::. ',
             /.::::::/.:::::::::::://ィグ::/,ィ:::://イ::::,!:::::::::iヘ::::::: l
            /.::::::/.:,:::::::::::/^ー-、‐'゙ノ::ノ / ノ:::,ィ,1:::::::lv!:lヘ:: |
        .    /.::::::::i::::{:::::::::::| ,ッィテrミ-、´ノノ:::ノノ ,!:::ノ!:::::!:レ゙::;!
            /.::::::::::{::::|::::::::::::! ゞノ ヾ`'  ̄,=≧-' ,リ::::ノ::}:〈
          /.::::::::::/:`::|::::::::::::i、 ` ̄     ´ヒ_ツ F ブ;:'::;:ハ::}
        /.::::::::::,':::::::::l:::::::゙、::iヾ、        、`ー'' /::ノ ノ' ソ
        //.::::::::::i:::::::::::',::::::: t、ヽ、      ┘  /:「
    . //.::::::::::,:::::|::::::::::: '、:::: l\`    (⌒7   .イ:::|     過疎ってないでもりがろうや
   /::/.:::::::::::::::::!:::::|::::::::::::::::ヽト!  ヽ、  `ニ′_, ィ´:ハ::|     
  /.:::/.::::::__::::::::|:::::l;::::::::::::::: H、  /`ー T´.:/!::/ ソ
 .::::::/ / . : : : : ̄| l 八::::::::::::: リ、`ーォ..::::: /:/  j/        
 ::::/ / . : : : : : :  j /  ヾ、::::::: | `7|:::::::: /´
 ::..:/. : : : : : :   レ′   ヽ::::::: l、′い::: ト 、
 ノ . : : : : : : :        ゙、:::::::} : :`'|:: |: : ヽ
 -、: : : : : : : : : : :       ',::::ハ  : : l::,! : : ,!
 :::::.ヽ、: : : : ;、-: : : :      V  : : :.jノ: : /
 `ヾ::::::ヽ/: : : : : : : :        : : : : : :「�h
0013デフォルトの名無しさん2007/04/27(金) 04:49:28
死ねよ
0014デフォルトの名無しさん2007/04/27(金) 10:43:55
http://video.google.com/videoplay?docid=-7073020265668105471
0015デフォルトの名無しさん2007/04/27(金) 11:02:40
過疎るもなにも、元から盛り上がってないだろ・・・
0016デフォルトの名無しさん2007/04/27(金) 14:52:14
gdcってGCの実装が悪いのか大きなファイルを読み込ませて処理させようとすると
すごく遅くなるんですけど、何か簡単に効率化できる方法ないですかね?
0017デフォルトの名無しさん2007/04/27(金) 16:23:44
いつの間にか1.014
ついに動的配列リテラル/構造体リテラルktkr
0018デフォルトの名無しさん2007/04/27(金) 16:33:12
>>16
おまえの実装が悪いだけだと思うが
なるべくnewを使わずに、確保できるものは最初から確保しておく
0019デフォルトの名無しさん2007/04/27(金) 16:33:58
>>16
一時的にgcを止めればいいとおも
0020デフォルトの名無しさん2007/04/27(金) 16:48:48
>>18
いやいや、巨大なファイルを読み込んでその一部を解析するプログラムで、
性能に響く部分は自分のクラスのnewは使ってないですよ。
間接的に
Stream file = new BufferedFile( filename );
foreach ( char[] line; file )
で呼んでるんで、これやめないといけないですかね?

>>19
ファイルが巨大なのでそれやるとメモリ不足になります。
一定期間ためてやっても性能上がりませんでした。
0021デフォルトの名無しさん2007/04/27(金) 17:58:51
>>1
乙

What's New for D 1.014
Apr 20, 2007
New/Changed Features
    * Added associative array literals
    * Added struct literals
    * Array element assignments can now be done in CTFE
Bugs Fixed
    * Bugzilla 1000: writefln fails on nested arrays
    * Bugzilla 1143: Assertion failure: '0' on line 850 in 'template.c' - On specialization of IFTI template parameters.
    * Bugzilla 1144: template mixin causes DMD crash
    * Bugzilla 1146: mixin + assert() crashes compiler
    * Bugzilla 1153: dmd assertion failure
    * Bugzilla 1159: Various mixins cause "CompileExp::semantic" message, some crash DMD
    * Bugzilla 1174: Program hangs creating an array of enums with nonzero initializer
    * Bugzilla 1177: no longer works inside CTFE functions.
    * Bugzilla 1180: the GC failes to handle large allocation requests propperly
    * Bugzilla 1189: Reverse the titles on web pages
0022デフォルトの名無しさん2007/04/27(金) 18:01:12
連想配列リテラルキタ━━━━(゚∀゚)━━━━ッ!!
0023デフォルトの名無しさん2007/04/27(金) 18:15:19
それで構造体リテラルってどうやって書けばいいんだ?
0024デフォルトの名無しさん2007/04/27(金) 18:17:22
>>23
http://www.digitalmars.com/d/struct.html#StructLiteral
0025デフォルトの名無しさん2007/04/27(金) 18:22:11
>>24
ああ、そこにあったのか。ありがと。

しかしこの書き方はなんか気持ち悪いな。
名前で指定できればよかったのに。
0026デフォルトの名無しさん2007/04/27(金) 18:23:20
つーか、これって前にも書けなかったっけ?
0027デフォルトの名無しさん2007/04/27(金) 18:24:23
opCallが不要になった。
0028デフォルトの名無しさん2007/04/27(金) 18:44:06
>>25
S(x: 1, y: 2) みたいな感じ?
0029デフォルトの名無しさん2007/04/27(金) 18:54:04
たしかにこれは気持ち悪いな。
static な opCall と構造体リテラル、優先して呼ばれるのは opCall っぽいしな。
どっちを使うか明確にできて、さらにメンバの名前で指定できたらうれしいね。
0030デフォルトの名無しさん2007/04/27(金) 18:57:33
久しぶりに嬉しいなあこの更新。

個人的には名前で指定するのは別の言語っぽくてあんま気分よくない。
というか、それなら普通の関数呼び出しも名前で指定できるべきじゃね?
0031デフォルトの名無しさん2007/04/27(金) 18:57:58
>>28
そうそう。Cの複合リテラルみたいに。

Size(10, 20) のどっちが幅か確かめるのにいちいちリファレンスなりソースなりを
確認しなきゃならんのはどう考えても非効率。ミスも出るだろうし
0032デフォルトの名無しさん2007/04/27(金) 19:02:27
最初は構造体リテラルで書いてたけど、
途中から、何か処理入れた方がいいからと opCall を実装する・・・
ということはありそうな話ではあるけど、
まあ、そういうのは構造体には向いてないか。

というか、この構造体コンストラクタみたいなものを
static opCall で実装してる部分に関しては
そろそろどうにかならんのだろうか。
もう、普通にコンストラクタ作れても良いと思う。

あるいは、ほとんどの状況下では
static opCall を使わなくてもいいような文法にするか。
初期値を指定できるようにして、
構造体リテラルで名前指定するようにすれば、
static opCall が必要になる状況は少ないと思う。
0033デフォルトの名無しさん2007/04/27(金) 19:04:47
関数の実引数を名前で指定できるのはVBだっけ?
あれは結構便利だと思うなあ。

Foo(/* hoge */ 0, /* fuga */ false);
Foo(hoge := 0, fuga := false);
0034デフォルトの名無しさん2007/04/27(金) 19:05:11
要するに、

struct S {
 int a;
 int b;
 int c = 4;
 int d = 8;
}

で、

S(a: 1, b: 2)  // OK
S(a: 1, b: 2, c: 3, d: 4)  // OK
S(d: 4, c: 3, b: 2, a: 1)  // OK
S(a: 1)  // Error

みたいな感じ。
0035デフォルトの名無しさん2007/04/27(金) 19:05:38
>>30
>普通の関数呼び出しも名前で指定できるべき
オーバーロードが複雑になりそう。
#ってかvbの名前付き引数思い出す。
0036デフォルトの名無しさん2007/04/27(金) 19:08:19
>>34
4つめはいささか互換性を崩しすぎではなかろうか
0037デフォルトの名無しさん2007/04/27(金) 19:09:28
>>36
ん、どういう事?
0038デフォルトの名無しさん2007/04/27(金) 19:12:04
>>37
S(1) が通るのに S(a: 1) がエラーになるのは気持ち悪いな、と思っただけ。
0039デフォルトの名無しさん2007/04/27(金) 19:16:03
>>38
b を初期化すれば通る。

でも、そういや
>static X x = { a:1, b:2}; // c is set to 0, d to 7
では、値を指定してないところは 0 で初期化されるのね。
なら、b に 0 を入れる風にしてコンパイル通るようにした方がいいか。
0040デフォルトの名無しさん2007/04/27(金) 19:16:50
0ってよりint.initだとおも
0041デフォルトの名無しさん2007/04/27(金) 19:30:39
まあ、正確にはそうね。
0042デフォルトの名無しさん2007/04/27(金) 19:59:14
初期化の部分に合わせるなら
S { a: 1, b: 2 } とかいう文法もアリかもしれんな。

なぜ { } じゃなく ( ) にして、しかも : を排したのか、だが、
とりあえず実装しやすかったからなんだろうか?
0043デフォルトの名無しさん2007/04/27(金) 20:12:02
>>42
無名デリゲートリテラルと紛らわしくなる、ってことはないか。
0044デフォルトの名無しさん2007/04/27(金) 20:19:34
前に型が来るから大丈夫ってことはないのかな?
よー分からんけど。
0045デフォルトの名無しさん2007/04/27(金) 20:29:19
型というか、この段階だとシンボルか?
0046デフォルトの名無しさん2007/04/27(金) 21:34:37
const b = (["hoge"[]: true, "fuga": false])["fuga"];

感動した。。。
0047デフォルトの名無しさん2007/04/27(金) 21:48:20
ふがー
0048デフォルトの名無しさん2007/04/27(金) 21:51:31
二段
const b = ((["hoge"[]: ["foo"[]: 1, "bar": 2], "fuga": ["foo"[]: 3, "bar": 4]])["fuga"])["foo"];

しかし、これといって面白い使い方も思いつかんな
0049デフォルトの名無しさん2007/04/27(金) 21:58:07
const a = (["a"[]: true, "b": false]);
ができないとあまり意味無い気ガス。

それと何故か以下のが通る。
auto test = (["a"[]:true,"b":false]);
const a = test.init["a"];
static assert(a==true);
0050デフォルトの名無しさん2007/04/27(金) 21:59:10
添え字が整数の連想配列リテラルって、配列のイニシャライザと区別付かんじゃん。
将来的なこと考えると、失敗じゃないのかね・・・?

それとも、静的配列以外のイニシャライザは未来永劫に実装されないということだろうか。
0051デフォルトの名無しさん2007/04/27(金) 22:07:42
>>50
配列リテラルと配列初期化子が分かれてるところも問題だしなぁ。
連想配列リテラルは"test"dのように[1:"a",2:"b",3:"c"]aとするべきだと思う。
0052デフォルトの名無しさん2007/04/27(金) 22:09:33
["a", "b", "c"] と [0:"a", 1:"b", 2:"c"] は明らかに違うのでは。
0053デフォルトの名無しさん2007/04/27(金) 22:11:02
>>52
静的配列のイニシャライザでは同じであるにも関わらず、
その他のコンテクストでは違う意味を持っているところに問題があるのではないか?
0054デフォルトの名無しさん2007/04/27(金) 22:12:38
>>27
あ、そっかw
0055デフォルトの名無しさん2007/04/27(金) 22:13:26
>>53
ん?

int[3] = [0:"a", 1:"b", 2:"c"];

とか通るの?
うち Mac だからまだよー分からんのだが。
0056デフォルトの名無しさん2007/04/27(金) 22:13:59
変数名忘れた。まあいいや。
0057デフォルトの名無しさん2007/04/27(金) 22:17:16
>>55
static char[][3] a = [0:"a", 1:"b", 2:"c"];

intではなくchar[]だと思うが、staticな配列は添え字付で初期化できるよ。
0058デフォルトの名無しさん2007/04/27(金) 22:51:18
�u�uperl化してるなぁ
っつーか早く仕様堅めんとマジでPerl6の二の舞になるぞ
ヲルターたんの近くに誰か仕事の邪魔するスパイがいるの鴨試練
0059デフォルトの名無しさん2007/04/27(金) 22:57:04
>>57
あ、型も間違えてた。
適当に書きすぎたな。

そうか・・・。添字付きで初期化できたんだ。
そりゃマズいな。
0060デフォルトの名無しさん2007/04/27(金) 22:59:36
@ とか余ってるんだから有効活用すればよかったのにな。
0061デフォルトの名無しさん2007/04/27(金) 23:02:25
何でもできるからといって何でもやってしまうと良くない好例
0062デフォルトの名無しさん2007/04/27(金) 23:17:47
先駆的な言語だからその辺は問題無いでしょ。
0063デフォルトの名無しさん2007/04/27(金) 23:35:07
まずかったらなかったことにすればおk

ネストしてない無名構造体って書けたっけ?
0064デフォルトの名無しさん2007/04/28(土) 00:40:23
いや、無理
0065デフォルトの名無しさん2007/04/28(土) 00:40:38
連想配列って、中身のリセットできないんだよな
newできないからクラスの中に突っ込むみたいな使い方できないし
使い勝手がいまいち
まあ、ハッシュテーブルクラス自作しちゃったから別にいいけど
0066デフォルトの名無しさん2007/04/28(土) 00:48:43
こういうこと? これ以前話出てたよな

int[char[]] s = (["foo":1, "bar":2]);
writefln(s["foo"]);
writefln(s["bar"]);
writefln("length=", s.length);

s = null;
s["boo"] = 3;
writefln(s["boo"]);
writefln("length=", s.length);
0067デフォルトの名無しさん2007/04/28(土) 01:02:16
>>65
中身のリセットならaa=null;とかaa.remove(key)とかで事足りる気がする。
あと、クラスの中に入れたきゃ、
普通にメンバ変数にしときゃ問題ない気もする。

使い勝手がいまいちなのは、
外部イテレータが欲しいとか、
キーが存在しない程度のことでいちいち例外投げるなとか、
いろいろあるからまぁ同意。
0068デフォルトの名無しさん2007/04/28(土) 11:42:48
>キーが存在しない程度のことでいちいち例外投げるな
C#のNullableみたいなものがあれば使いやすくなるのかな。
C#使ったこと無いんでよく知らんけど。
0069デフォルトの名無しさん2007/04/28(土) 14:03:34
例外を投げるようにするなら、
せめて assoc.has(key) てメソッドくらい持っててホスィ……

Value* valuePtr = (key in assoc);
Value value = (valuePtr != null) ? *valuePtr : null;
とか怪しすぎる。

そういえば、D言語には「コンパイラ組み込みクラス」
という概念は無いんだろうか?
0070デフォルトの名無しさん2007/04/28(土) 14:12:52
Javaのintみたいなもののこと?
0071デフォルトの名無しさん2007/04/28(土) 14:17:45
>>69
if( key in assoc )じゃだめか?
0072デフォルトの名無しさん2007/04/28(土) 14:20:18
>>71
こうじゃね?
if(auto ptr = key in assoc)
  writefln(*ptr);
0073デフォルトの名無しさん2007/04/28(土) 14:21:57
普通に

TValue get(TKey, TValue)(TValue[TKey] aa, TKey key) {
    auto p = key in aa
    return (p != null) ? *p : TValue.init;
}

とかつくっときゃいいんじゃね?
0074デフォルトの名無しさん2007/04/28(土) 18:22:20
void main() {
  generics(519); // ここは定数でコーディング
}
void generics(int n) {
  dout.writefln(n);
  generics_!(n);
}
void generics_(int n)() {
  dout.writefln(n);
} 
>519
>1
いろいろ遊んでて途中でこういうコードがコンパイルできてたんだけど
出力もおかしいんですし、コンパイラ側のバグとかですか?
0075デフォルトの名無しさん2007/04/28(土) 18:29:27
519は定数だけど、
genericsの引数のnは定数じゃないんだから
テンプレートのint引数に使えちゃまずい、
ってことか。
0076692007/04/28(土) 21:50:41
ああー、ポインタ使いたくない使いたくないと思ってるうちに、
if文でnullテストとかの発想自体頭から消えてたヨー。

……でもif文にbool以外渡したくねぇなあ、とか思う俺は
もうJavaから帰ることはできないのかもしれない。
0077デフォルトの名無しさん2007/04/28(土) 23:33:53
http://www.kmonos.net/alang/d/type.html
 > 式をboolへとキャストするのは、数値型に対しては0のの比較 !=0 と同じ意味で、
 > ポインタや参照型に対しては、null との比較 !=null と同じ意味です。
というように、小手先の省略記法ではなくて
言語の意味に含まれているやり方だという点で
精神衛生的にはいい感じ。

まあ個人によりけりだろうけどね。
0078デフォルトの名無しさん2007/04/29(日) 01:25:05
Ruby の場合 false != nil だったりして
0079デフォルトの名無しさん2007/04/30(月) 02:48:40
WideStudio使えりゃ面白そうなんだがなぁ
0080デフォルトの名無しさん2007/04/30(月) 11:42:25
>>79
使いにくいですけどね。
0081802007/05/01(火) 12:02:37
簡単なアプリを作るときはいいんですけど、大規模になると・・・。
0082デフォルトの名無しさん2007/05/01(火) 17:12:38
>>81
Dの大規模アプリなんてこの世にあるのか?
0083802007/05/01(火) 17:35:22
>>82
WideStudioのことです。
説明不足ですみません。
0084812007/05/01(火) 19:04:21
>>83
あ、いえ、なんかすみません
0085デフォルトの名無しさん2007/05/01(火) 23:04:28
なんか番号が面白いことになっている気がする
0086デフォルトの名無しさん2007/05/01(火) 23:08:18
レベルの高い自作自演だなー
0087デフォルトの名無しさん2007/05/02(水) 00:59:56
if(a == typeof(a).init)
return;
_a = a;

if(b == typeof(b).init)
return;
_b = b;

こんな感じの式の繰り返しを

check_and_assign("a");
check_and_assign("b");
check_and_assign("c");

テンプレート使ってこんな感じで書くことってできますか?
0088デフォルトの名無しさん2007/05/02(水) 02:43:00
呼び出し元関数からreturnしたり、
呼び出し元関数からみえる識別子を使ったり、
ってことだよね。
まさに宣言した位置に文を読み込みたい、という。

テンプレートには宣言しか書けないから無理じゃないかなあ。


テンプレート関数にaliasとして変数名を渡して、その戻り値をみて
returnするかどうか分岐して、…というようにまどろっこしいこと
しないと無理だと思う。

あるいは、
mixin(check_and_assign!("a"));
という構文で87の言うようなものを実現することは、一応不可能じゃないと思う。

import std.metastrings;
template check_and_assign(char[] id){
 const char[] check_and_assign = Format!(import("base_d_code.dtxt"),id);
}
とかいう感じになるのかなあ。
大変だと思うけど。
0089デフォルトの名無しさん2007/05/02(水) 09:44:39
mixinでおけ
char[]check_and_assign(char[]a){
    return `if(`~a~` == typeof(`~a~`).init)return;_`~a~`=`~a~`;`;
}
mixin(check_and_assign("a"));
0090デフォルトの名無しさん2007/05/02(水) 10:37:33
>>88-89
回答ありがとうございます。
やってみたのですが、
cannot evaluate check_and_assign("a") at compile time
argument to mixin must be a string, not (check_and_assign("a"))

このようなエラーがでてしまいます。
GDCを使わなければならない関係で、
DMDのバージョンが1.007と古くなっているのがいけないのでしょうか。
コンパイル時の関数実行ってもっと新しいバージョンのDMDでないと対応していなかった気がします。
0091902007/05/02(水) 10:45:21
勘違いしていました。
mixin文はDMD1.005から対応していますから、1.007なら当然動くはずですよね。

check_and_assignを関数内で宣言していたのでコンパイル時に評価できなかったようです。
staicにしたらうまくできました。

どうもありがとうございました。
0092デフォルトの名無しさん2007/05/02(水) 10:46:23
"a" "a" ("a") "a" "a"
0093デフォルトの名無しさん2007/05/02(水) 16:17:27
なるほど、関数のコンパイル時実行か。
すごいなあ。
0094デフォルトの名無しさん2007/05/02(水) 18:10:09
あれっ
そんなことできるのか
0095デフォルトの名無しさん2007/05/02(水) 20:05:04
テンプレートの再帰呼び出しの組み合わせで処理してたのを、
コンパイル時関数実行に書き換えたら、コンパイル速度一気に上がった。
メモリ消費も少ないし、変態コーディングしなくてもよくなったし、こりゃ便利。
0096デフォルトの名無しさん2007/05/03(木) 08:03:29
ぐっすんの人ケアレスミス多すぎwwwwwwwww
0097デフォルトの名無しさん2007/05/03(木) 08:12:16
誤爆・・・
0098デフォルトの名無しさん2007/05/03(木) 17:21:28
ATL見たいな事をやりたくて、こんなコードを書いたんだけど、
コンパイル通らないのはこんなものなのか?

class ITestImpl(T) {
char[] name_ = "super class";
void print() { printf(cast(char*)this.name_); }
}
interface ITest {
void print();
}
class TestClass : ITestImpl!(TestClass), ITest {
char[] name_;
this(char[] name) { name_ = name.dup; }
}
void test() {
ITest t = new TestClass("test class");
t.print();
}
0099デフォルトの名無しさん2007/05/03(木) 17:40:18
>>98
class TestClass じゃなくて、class ITestImpl の方に ITest を派生させればいいんじゃない?
0100デフォルトの名無しさん2007/05/03(木) 18:36:00
>>98
コンパイルエラーと関係ないけどTestClassのchar[] name_;はいらね。
0101デフォルトの名無しさん2007/05/03(木) 18:47:41
>>99案をとるとこうか。
こうすれば楽にできるとはいえ、
個人的には>>98のやりかたでコンパイルが通ってほしいとは思う。

class ITestImpl(T,Bases...) : Bases{
char[] name_ = "super class";
void print() { printf("%.*s",name_); }
}
interface ITest {void print(); }
class TestClass : ITestImpl!(TestClass,ITest) {
this(char[] name) { name_ = name.dup; }
}
void test() {
ITest t = new TestClass("test class");
t.print();
}
~
0102デフォルトの名無しさん2007/05/03(木) 19:11:20
インターフェイスの再実装のときは基底クラスの実装を継承せず
そのクラスで実装しろ、ということだから、再実装に限らず
実装するときはそのクラスで、ということなんじゃないかと思った。

けど、そうすると、
class TestClass : ITestImpl!(TestClass), ITest {
alias ITestImpl!(TestClass).print print;
this(char[] name) { name_ = name.dup; }
}
とか、aliasのかわりに import hogemodule: print = hogeprint
とかで通らないのは微妙な気がする。

あと http://www.kmonos.net/alang/d/interface.html の
 > インターフェイスは、そのインターフェイスを継承する関数が
は関数じゃなくてクラスなんじゃないかと思った。
0103デフォルトの名無しさん2007/05/03(木) 20:03:18
mixin
0104デフォルトの名無しさん2007/05/03(木) 20:06:18
>とかで通らないのは微妙な気がする。
ん? インターフェイスに限らず、クラスの中にalias書いただけでは実装できんでしょ。
0105デフォルトの名無しさん2007/05/04(金) 00:40:24
テンプレートの仕様ってとてもコンピュータ言語の仕様とは思えないんですが、
何考えてあんな阿呆みたいな事(学生の思いつきレベル?)やってるんでしょうか。
0106デフォルトの名無しさん2007/05/04(金) 01:01:06
>>105
どの辺が? と釣られてみる。
0107デフォルトの名無しさん2007/05/04(金) 01:01:12
批判したいならもうちょっと具体的にどうぞ
0108デフォルトの名無しさん2007/05/04(金) 01:19:47
>>105
まずboostのソースを見て耐性を付けることをお勧めします。
0109デフォルトの名無しさん2007/05/04(金) 01:42:24
>http://pc11.2ch.net/test/read.cgi/tech/1170343752/810

乙
0110デフォルトの名無しさん2007/05/04(金) 11:52:58
Boostのテクニックは凄いし、Lisp以上の工夫はしてる。しかし、Lisp以上の
柔軟性は実現出来てないかも。
0111デフォルトの名無しさん2007/05/04(金) 13:34:08
予約語になったmacroってどんな機能になるんだろうか
0112デフォルトの名無しさん2007/05/04(金) 15:32:44
---main.d----------
import sub1, sub2;
void main() {
test("abcd\0"w.ptr);
printf("%d\n", lstrlenW("abcd\0"w.ptr));
}
---sub1.d----------
extern(Windows) int lstrlenW(wchar*);
---sub2.d----------
private extern(Windows) int lstrlenW(wchar*);
void test(wchar* p) { printf("%d\n", lstrlenW(p)); }
-------------------
なんでlstrlenWがコンフリクトするんでしょうか?
  main.d(4): Error: sub1.lstrlenW at sub1.d(1) conflicts with sub2.lstrlenW at sub2.d(1)

試しに、main.dのimportからsub1はずしたら、
  main.d: module main sub2.lstrlenW is private
  main.d(4): Error: function sub2.lstrlenW is not accessible from main
と、sub2のprivate属性効いている様なんですけど。
0113デフォルトの名無しさん2007/05/04(金) 16:32:34
private の場合に private ですよとエラーが出るってことは、
private でも認識はしてるわけで、
だからコンフリクトするんだろう。
0114デフォルトの名無しさん2007/05/04(金) 17:38:21
>>104
基底クラスから継承しない、ってのは、派生クラスでの実装の意思を
確認し(て、実装し忘れバグを防ぎ)たいというだけのことだと思うから、
シンボルを明示的にインポートしてる場合は実装したことにしておいても
よさそう、
というような意味。そのクラスでの実装がされるわけじゃないね、たしかに。

>>112
private importの話とは違って、private属性のモジュールメンバは
外部から参照不可になるだけであって名前が隠されるわけじゃ
ないんだろうね。
0115デフォルトの名無しさん2007/05/04(金) 17:46:43
ttp://www.kmonos.net/alang/d/attribute.html#deprecated に
> モジュールのメンバを private と宣言するのは、 C での static 宣言と同等です。

とあったので、Cと同じく名前も見えないものだと誤解してました。
そうすると、見えなくするには、別モジュールへ分離してprivate importするしか方法ないですかね?
0116デフォルトの名無しさん2007/05/04(金) 18:19:12
じゃないかね。
0117デフォルトの名無しさん2007/05/04(金) 19:08:04
名前の衝突を避けるなら、main.d側で選択・改名・staticインポートを
使うという手もある。場合によるけど。
0118デフォルトの名無しさん2007/05/04(金) 19:19:34
Javaスレかと思た
0119デフォルトの名無しさん2007/05/05(土) 09:13:51
D言語がやっとこさVer.1を出したのにはわけがある。
それはNemerleだ。
これ以上はいうまい。
0120デフォルトの名無しさん2007/05/05(土) 09:24:26
マネージド言語とネイティブ言語では対象領域が違うぜ。
0121デフォルトの名無しさん2007/05/05(土) 23:34:56
おっ、ネマール知ってんだ!?
やるねっOTL
0122デフォルトの名無しさん2007/05/05(土) 23:47:26
Dやってる人には言語オタ多そうだよな。
0123デフォルトの名無しさん2007/05/06(日) 00:09:12
Dやってる時点で言語オタじゃね
0124デフォルトの名無しさん2007/05/06(日) 02:03:39
>>119
Nemerleは昔さわってたな
開発スピードが鈍化したせいでなんとなく放置状態になってた
なんか動きでもあったの?
0125デフォルトの名無しさん2007/05/06(日) 21:31:53
別にオタでよくね
0126デフォルトの名無しさん2007/05/06(日) 21:33:02
別に誰もオタ否定してなくね
0127デフォルトの名無しさん2007/05/06(日) 21:38:27
サイレント魔女リティーに耳を傾けるのは紳士としてのたしなみじゃね
0128デフォルトの名無しさん2007/05/07(月) 10:37:17
屁の合間にオヤジみたいな声を出した時

ブッ
「あー、クソっ!」
ブッー、ブブッ
「うぇぁー、チキショウ!」
0129デフォルトの名無しさん2007/05/07(月) 11:04:13
(´ω`)
0130デフォルトの名無しさん2007/05/07(月) 13:35:35
誰かD HACKSとか書けばよくね?
0131デフォルトの名無しさん2007/05/07(月) 14:03:55
1ヶ月年後には多分一部使えなくなり、
1年後には多分使えなくなる。
0132デフォルトの名無しさん2007/05/07(月) 14:57:27
じゃ「日刊 D HACKS 」でよろ
0133デフォルトの名無しさん2007/05/07(月) 16:13:25
日刊D HACKSスレとか、2chにホスティングしてもらってさ。
shinichiro_hさんとか、書かないかなぁ...
0134デフォルトの名無しさん2007/05/07(月) 19:00:15
DもHaskellもはやらねーな
共闘するか?
0135デフォルトの名無しさん2007/05/07(月) 19:03:31
Daskell
0136デフォルトの名無しさん2007/05/07(月) 19:04:11
Taskell
0137デフォルトの名無しさん2007/05/07(月) 22:35:57
今はErlangだろ...常識的に考えて。
0138デフォルトの名無しさん2007/05/07(月) 22:37:42
ダーラン
0139デフォルトの名無しさん2007/05/07(月) 23:44:54
なんでも頭にDつけりゃいいってもんじゃないだろw
0140デフォルトの名無しさん2007/05/07(月) 23:49:14
D#
0141デフォルトの名無しさん2007/05/07(月) 23:55:38
このままアルファベットのHまで進めば、
「はじめてのC」どころの騒ぎじゃなくなるな。
0142デフォルトの名無しさん2007/05/07(月) 23:56:26
BCDEFGH
 C++
 C#
0143デフォルトの名無しさん2007/05/08(火) 02:21:35
>>139
頭文字DってことでおK?
0144デフォルトの名無しさん2007/05/08(火) 16:09:10
>141
はじめてのZ#
0145デフォルトの名無しさん2007/05/08(火) 18:24:32
そしてα言語・・・
0146デフォルトの名無しさん2007/05/08(火) 18:26:06
漢字ならまだいっぱい余ってるよ!
0147デフォルトの名無しさん2007/05/08(火) 22:03:04
日本に"なでしこ"があるように、中国には漢字で記述するプログラミング言語あるんだろうなあ。きっと。
0148デフォルトの名無しさん2007/05/09(水) 10:56:45
>>147
http://pc11.2ch.net/test/read.cgi/tech/1145017800/68
0149デフォルトの名無しさん2007/05/09(水) 18:49:53
それ C じゃんw
0150デフォルトの名無しさん2007/05/09(水) 22:28:59
そういや、殆ど英文で書ける言語があった気がするけど、あれってEiffelだっけ?
0151デフォルトの名無しさん2007/05/09(水) 22:35:34
COBOL か?
0152デフォルトの名無しさん2007/05/09(水) 22:36:22
Appletalk だな。
0153デフォルトの名無しさん2007/05/09(水) 22:41:08
ほとんど英文なんて見づらそうだな
VBですら読みにくくてしょうがないのに
0154デフォルトの名無しさん2007/05/11(金) 06:05:44
Javaだろ
0155デフォルトの名無しさん2007/05/11(金) 16:51:24
バージョンうpまだー?
0156デフォルトの名無しさん2007/05/12(土) 02:09:44
やっぱみんな並列言語か...
この過疎ぶりをみると...
0157デフォルトの名無しさん2007/05/12(土) 02:27:25
並列言語とはなんのこといってんの?
0158デフォルトの名無しさん2007/05/12(土) 02:27:59
http://pc11.2ch.net/test/read.cgi/tech/1176896530/
0159デフォルトの名無しさん2007/05/12(土) 02:32:02
コルーチンはまだ?
0160デフォルトの名無しさん2007/05/12(土) 03:35:23
>>157
Erlangとか、Erlangとか、Erlangとか。
0161デフォルトの名無しさん2007/05/12(土) 03:40:27
Nemerle
0162デフォルトの名無しさん2007/05/12(土) 19:53:57
http://docs.sun.com/app/docs/doc/819-6259/6n89m7rn6?l=ja&a=view
0163デフォルトの名無しさん2007/05/12(土) 21:05:28
>>162
ついにSunも・・・
0164デフォルトの名無しさん2007/05/13(日) 00:11:55
マジで!?


と思ったけど別物じゃねーかチクショウ
0165デフォルトの名無しさん2007/05/13(日) 00:13:58
パテント主張せな逝かんね。
0166デフォルトの名無しさん2007/05/13(日) 00:37:29
これはひどい
0167デフォルトの名無しさん2007/05/13(日) 00:39:13
Javaへのダメージを考えて先手を打って潰しにかかったな
0168デフォルトの名無しさん2007/05/13(日) 02:15:18
SunのDのが先だよ
0169デフォルトの名無しさん2007/05/13(日) 02:16:47
ヲルタのDは99年だろ?
0170デフォルトの名無しさん2007/05/13(日) 04:40:02
Solaris 10 が出た数年前から名前がダブったことは知られているのに(w
0171デフォルトの名無しさん2007/05/13(日) 08:25:03
>>162
これはす・・・ω・`)
0172デフォルトの名無しさん2007/05/13(日) 16:13:28
D言語研究ってGoogle八分くらってない?
0173デフォルトの名無しさん2007/05/13(日) 16:21:31
>172
PageRankが下がっただけだろう。現在28位。
0174デフォルトの名無しさん2007/05/14(月) 18:24:13
dsss(version 0.64)の依存関係の解決が便利すぎるのでWin環境で利用しているんですが、
dmdのように .res (リソーススクリプトをコンパイルしたやつ) をリンクしてビルドさせることは可能なんでしょうか?

たとえば >dsss build -gui main.d resource.res みたいに使えないのかなぁと
0175デフォルトの名無しさん2007/05/16(水) 02:01:04
本命はコードギアのターボD。
DでVCLを使える。
0176デフォルトの名無しさん2007/05/16(水) 02:01:52
自力でMSのVisualStudioには勝てないからね
0177デフォルトの名無しさん2007/05/16(水) 02:21:07
言語仕様とかどうでもいいからさっさとIDEを作るべきだと思う。
じゃないと一生普及しないよ。
0178デフォルトの名無しさん2007/05/16(水) 02:22:39
Eclipseプラグイン作るとか。
0179デフォルトの名無しさん2007/05/16(水) 02:25:35
>>177
漏れはIDE好きじゃないけどその意見には同意
あとどっちかっつーと各種Frameworkの充実も待たれる
いまどき何かしようとして全部土台から作るって
Cと変わらんじゃないかと
0180デフォルトの名無しさん2007/05/16(水) 02:26:02
http://eclipsewiki.net/eclipse/?D%B8%C0%B8%EC%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3
0181デフォルトの名無しさん2007/05/16(水) 02:35:52
いや、自動補完がないプラグインなんてヘタレ作者のオナニーだろ。
せめてコンパイラが構文解析とかをxmlとかで吐いてくれたら作りやすくなるんだが。
0182デフォルトの名無しさん2007/05/16(水) 04:26:47
いや、言語仕様が確定しないと怖くて使えないよ。
バージョンアップは仕様変更だけじゃなくて、
バグフィックスも含んでるんだから。
0183デフォルトの名無しさん2007/05/16(水) 04:35:10
仕様が確定してもバグが出なくなるわけじゃないと思うけども
0184デフォルトの名無しさん2007/05/16(水) 04:37:21
仕様が確定してるんだから、
バグフィックス版を適用するのに問題はないだろ。
0185デフォルトの名無しさん2007/05/16(水) 04:40:26
ある仕様固定で開発してる時に何か致命的なバグに遭遇した場合に、
以降のバージョンで大きく仕様が変わってたら困るっしょ。
0186デフォルトの名無しさん2007/05/16(水) 05:42:16
バグの無いようにもよるけど
それでメリットがあるなら乗り換える
改悪だったら捨てる
0187デフォルトの名無しさん2007/05/16(水) 07:58:21
>>181
無いよりはマシ
0188デフォルトの名無しさん2007/05/16(水) 12:12:02
IDEいらね
0189デフォルトの名無しさん2007/05/16(水) 12:29:29
一応"-v1"という確定した仕様もある気がするけど……
最新の各ライブラリは-v1に準拠とかしてるんだろうか。
1.007での演算子の優先順位の変更なんか、地味に挙動が変わりそうで不安だ。
0190デフォルトの名無しさん2007/05/16(水) 16:41:23
>>181
dmd/src/dmd/ に在る parse.c が構文解析なんじゃないの?
0191デフォルトの名無しさん2007/05/17(木) 00:02:04
DMDをDで書きなおす計画とかないのかな。

やる意味がないか。
0192デフォルトの名無しさん2007/05/17(木) 00:22:54
>>191
正式版がリリースされればそれもありじゃないかと。今の時期それをやる意味はなさそうです。
0193デフォルトの名無しさん2007/05/17(木) 00:30:29
1.0って正式版じゃないの?
0194デフォルトの名無しさん2007/05/17(木) 00:36:12
正式版とは何か
0195デフォルトの名無しさん2007/05/17(木) 00:40:41
import package.*;
みたいにできるようにならんかなあ。
0196デフォルトの名無しさん2007/05/17(木) 00:50:02
>>194
仕様がダイナミックに変更される今の状態を正式版と呼ぶのは躊躇われる・・・
「仕様が固まったら」の方が正しいですかね。
0197デフォルトの名無しさん2007/05/17(木) 02:59:52
PCスペックがダメダメだから自動補完イラネ
プロジェクト管理だけで十分
0198デフォルトの名無しさん2007/05/17(木) 03:28:23
>>196
そんなこと言ってたら廃れた後になるぞw
0199デフォルトの名無しさん2007/05/17(木) 04:12:41
Tango 0.98 released

* Added Signals and Slots implementation
* Reworked the Time package
* Updated for DMD 1.014
* More documentation examples
* Exception stack-trace example using Flectioned
0200デフォルトの名無しさん2007/05/17(木) 11:12:34
>>191
まぁ今のところは、他ならぬ自分らが言語仕様を信じてなさそうだからねw
彼らの界隈でそういう話が出るまでは、こっちも大がかりなことにはDを使えない。のかも。
0201デフォルトの名無しさん2007/05/17(木) 13:55:25
>>196
template mixinでやろうと思ったけど、よくよく考えれば無理だった
02022012007/05/17(木) 14:06:12
アンカミス>>195
0203デフォルトの名無しさん2007/05/17(木) 19:32:20
そういや、本家WikipediaにD言語の項目があるんだったな
ttp://en.wikipedia.org/wiki/D_programming_language
だれか翻訳してくれ
0204デフォルトの名無しさん2007/05/17(木) 19:35:16
別に大したこと書いてないがな
0205デフォルトの名無しさん2007/05/17(木) 19:39:12
"本家"Wikipediaとは?
0206デフォルトの名無しさん2007/05/17(木) 19:44:07
uncyclopediaとかMonapediaじゃない本物って事だろ。
0207デフォルトの名無しさん2007/05/17(木) 19:44:59
>>204
いや、日本版Wikipediaの項目があんまりにも質素だから...
0208デフォルトの名無しさん2007/05/17(木) 19:56:02
既出ならすまん
struct A{int v;}
void main(){
    A a = A(10);
    if (a == a.init) writefln(a.v,"(a==a.init)");
    else writefln(a.v,"(a!=a.init)");
    a.v = 100;
    if (a == a.init) writefln(a.v,"(a==a.init)");
    else writefln(a.v,"(a!=a.init)");
    a = A(1000);
    if (a == a.init) writefln(a.v,"(a==a.init)");
    else writefln(a.v,"(a!=a.init)");
}
全部のif文がtrueの方になるんだが・・・
2つ目と3つ目はなんでfalseにならないの?
0209デフォルトの名無しさん2007/05/17(木) 20:02:32
それよりも全部10返してるってほうが問題だわな。
0210デフォルトの名無しさん2007/05/17(木) 20:15:02
import std.stdio;
struct A{int v;}
void main(){
A a = A(10);
a.v = 100;
writefln("a.v = %s", a.v);
writefln(a == a.init);
writefln("a.v = %s", a.v);
}

構造体リテラルで初期化された構造体変数をinitと比較すると値が変わってしまうみたいだな。
0211デフォルトの名無しさん2007/05/17(木) 20:15:58
これはバグだろな。
writefln(a.v);とかa.init;とかを間に挟むとさらに挙動不審になるし。

どんなバグなのかは分からんけど。
02122082007/05/17(木) 20:20:34
struct A{int a;static A opCall(int x){A a;a.v=x;return a;}}
に構造体を変えたら正常に動いた。構造体リテラルのバグのようだ
02132082007/05/17(木) 20:31:55
俺にはなんとも原因が想像できんバグだなあ
えらい人報告お願いしますm(..)m
0214デフォルトの名無しさん2007/05/17(木) 21:25:15
GDCの更新が止まってる件について。
0215デフォルトの名無しさん2007/05/17(木) 21:35:04
更新されてるよ?
0216デフォルトの名無しさん2007/05/17(木) 21:41:15
なんでgdcmacはPanther用のバイナリを用意してくれなくなったんだろ・・・
0217デフォルトの名無しさん2007/05/18(金) 02:56:29
>>216
Pantherでテストしてくれる人が居ないとか
0218デフォルトの名無しさん2007/05/18(金) 03:58:52
お、日本語版WikipediaのD言語の項目で、加筆以来がある
仕事はやw
後は誰かが、>>208を書けば良いだけだな
02192142007/05/18(金) 13:32:52
>>215
GDC0.23が最新ですよね?
DMD1.007相当なんでそろそろ新しいのが出ないかなぁと思っているんですが。
0220デフォルトの名無しさん2007/05/18(金) 13:53:38
>>219

ttps://svn.sourceforge.net/svnroot/dgcc/trunk/d/ChangeLog
0221デフォルトの名無しさん2007/05/18(金) 21:16:25
意訳。

const、final、invariantの準備

これはD 2.0のベータに来る予定であり、いくらかのソースコードの変更を必要とします。
その為、配列やポインタな関数の引数に明確に"in"を用い初めてください。

"in"は"scope const final"をあらわすようになります。その意味は:

final - 引数は関数の中で再代入されなくなります。
const - その関数は参照先の内容を変えようとさせなくなります。
scope - その関数は関数の範囲で持続する引数のデータの参照を保たなくなります。

例:

int[] g;

void foo(in int[] a)
{
    a = [1,2];    // error, a is final
    a[1] = 2;   // error, a is const
    g = a;    // error, a is scope
}

引数でこれらの操作のどれかをしたいのなら、"in"を使用しないでください。"in"を使うことはD 1.0のコードでは特に意味は無いので、それは後方互換になるはずです。

Adding in all those 'in's is tedious, as I'm finding out :-( , but I think the results will be worth the effort.
0222デフォルトの名無しさん2007/05/18(金) 21:36:55
c++でconstをへっちゃらべっちゃら書き込む作業がinで完結するようになるのか

SelfTypeが言語的にサポートされるといいなあ……
0223デフォルトの名無しさん2007/05/18(金) 22:01:03
むしろデフォでそれにしてもらいたいくらいだ。
うわーん引数に代入するなー誰が保守すると思ってるんだー。

ところで>>221の原文はどこでっしゃろ?
0224デフォルトの名無しさん2007/05/18(金) 22:04:06
>>223
news://news.digitalmars.com/[email protected]
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=8642
0225デフォルトの名無しさん2007/05/18(金) 22:48:06
const地獄に辟易してるWalterタソらしい仕様だな。どうせメインはこれなんだから、これだけで十分でしょ?って感じか。
あとはconstなオブジェクトかあ。
0226デフォルトの名無しさん2007/05/18(金) 23:03:19
>>221
2.0bの構想が既にあるってことは、もうすぐ2.0になるってこと?
0227デフォルトの名無しさん2007/05/18(金) 23:04:34
俺がconstの機能だと思ってたものがfinalの機能だったのね・・・
んでconstの意味も再確認
俺の無知さに乙
0228デフォルトの名無しさん2007/05/18(金) 23:04:51
あれだけ1.0が長引いたんだし、macroの実装、yieldの実装の後じゃね?
0229デフォルトの名無しさん2007/05/18(金) 23:14:56
割と早めの予感・・・
0230デフォルトの名無しさん2007/05/18(金) 23:33:37
Java みたいに、そのうちバージョン付けの方針がいきなり変わりそうだなあ。
0231デフォルトの名無しさん2007/05/19(土) 03:20:25
Dのconstやfinalは変数を修飾していて、型を修飾しているわけじゃないんだよね?
0232デフォルトの名無しさん2007/05/19(土) 08:15:33
yaccみたいなのってないですか?
0233デフォルトの名無しさん2007/05/19(土) 09:43:04
D のコードを吐く yacc みたいなやつ、ということ?
0234デフォルトの名無しさん2007/05/19(土) 09:44:39
ないなあ
ttp://en.wikipedia.org/wiki/List_of_compiler-compilers
0235デフォルトの名無しさん2007/05/19(土) 11:11:39
http://www.dsource.org/projects/ddl/wiki/Enki
http://www.mbutscher.de/antlrd/
今のdmdで動くかどうかはしらない
0236デフォルトの名無しさん2007/05/19(土) 22:59:44
D で作られた yacc みたいなやつ、ということ?
02372322007/05/20(日) 00:06:09
すいません。Dのコードを吐くyaccみたいなやつです。
0238デフォルトの名無しさん2007/05/20(日) 13:07:12
>>237
既存の物と組み合わせて、自分で書けばいいジャマイカ
それとも急を要すのか?

だったら、dsource上にあるのだったら、
http://www.dsource.org/projects/dgrammar
とかぐらいしかないぜ?
02392382007/05/20(日) 13:12:20
あ、すまん。もう無いようだ。
0240デフォルトの名無しさん2007/05/20(日) 13:14:12
>>239
まだあるけど?
http://svn.dsource.org/projects/dgrammar/
0241デフォルトの名無しさん2007/05/20(日) 14:14:11
wikiのリンクがおかしなことになってる。
a-hatena.com/bbsとかinterq.com/bbsとかなんだこれ。
0242デフォルトの名無しさん2007/05/20(日) 18:07:43
>>241
それ、最近、流行ってるwikiスパムだ
0243デフォルトの名無しさん2007/05/20(日) 19:17:55
>>242
そうか、直そうと思ったけどどこをいじればいいのか。。。

で、たぶん初歩的な質問だと思うんだけど、Win32APIのSetFileAttributesを使いたいんだが
関数定義しても使えない。
Kernel32.libをいじらないといけない?
0244デフォルトの名無しさん2007/05/20(日) 19:43:38
>>243
SetFileAttributesA とか SetFileAttributesW で定義してるかい?
0245デフォルトの名無しさん2007/05/20(日) 19:48:33
>>244
うん、してるんだけどね。。。って自己解決したんだ。

3時間悩んでここに書いた直後、extern(Windows)のつけ忘れってことにきづいた。ごめんね。
0246デフォルトの名無しさん2007/05/20(日) 19:51:34
書いた直後に気づいてなんか申し訳なくなるってよくあるよねそれ俺
0247デフォルトの名無しさん2007/05/20(日) 19:54:15
早くもレスがついちゃってたりするとすごく申し訳ないよなw
0248デフォルトの名無しさん2007/05/20(日) 23:46:53
他人に説明するために、客観的に整理して書こうとするので、自然と頭の中が整理されるからかな?
という論を挙げておく。
0249デフォルトの名無しさん2007/05/20(日) 23:47:45
それありうるね
0250デフォルトの名無しさん2007/05/21(月) 00:44:52
ということで、みんな何か書けば良いと思うよ。
0251デフォルトの名無しさん2007/05/21(月) 00:45:55
>>245
間違い方も流れも予想通りすぎてワロタwww
0252デフォルトの名無しさん2007/05/21(月) 01:11:06
俺もたまにある。
0253デフォルトの名無しさん2007/05/21(月) 01:30:47
整理されるというよりは、他人に聞くという行為によって
考えがいったんリセットされて、そこで改めて考え直すことで
見落としに気づけるんだろうな。
いったん変な考えにとらわれるとなかなかそこから離れられないものだから。


全然関係ない話だけど、
 mixin Slot!(Dummy)
  .decl!("add", int, int,int)
  .decl!("mul", int, int,int)
  .end;
というような文で
 int function(int, int) add;
 int function(int, int) mul;
というような一定形式の宣言を行うテンプレートを、
 macro(Slot){
  int add(int,int);
  int mul(int,int);
 }
と書けるようになるのがmacroだといいなあ、と思った。

要は、D言語の適当な構文要素にあうトークン列を、
別の適当なD構文に組み替えるような機能。
0254デフォルトの名無しさん2007/05/21(月) 01:53:20
Nemerleみたいなもんか
0255デフォルトの名無しさん2007/05/21(月) 01:55:04
Nemerleはそこまで器用なことできないだろ
0256デフォルトの名無しさん2007/05/21(月) 02:59:14
なんでみんなNemerleなんだ
Erlangしようぜ、Erlang
0257デフォルトの名無しさん2007/05/21(月) 08:46:36
はぁ?マクロの話だろ?バカか
0258デフォルトの名無しさん2007/05/21(月) 10:37:58
もっとしっかりしようよ
0259デフォルトの名無しさん2007/05/21(月) 16:11:21
つよししっかりしなさい
0260デフォルトの名無しさん2007/05/21(月) 17:46:19

  ,',i><iヽ
  /((ノノリノ))  ヒナの菊に
. ((ミi!゚ ヮ゚ノミ)) 指を入れてほしいの〜
    (⊃⌒*⌒⊂)   ∧_∧
     /__ノ(i)ヽ__)  (    )
._______  /      ヽ
||\         /  .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ            \|  (    )
  |     ヽ           \/     ヽ.
  |    |ヽ、二⌒)        / .|   | |
0261デフォルトの名無しさん2007/05/21(月) 17:48:23
はやく2.0b来ないかな
2.0b来れば、多分、Dでも大規模な機能変更は無いと思うし
0262デフォルトの名無しさん2007/05/21(月) 18:14:25
チョコラテ入れ

┃   ┃
┗━━━┛
0263デフォルトの名無しさん2007/05/21(月) 18:19:57
>>261
2.0b -> 2.0RCで鬼のような仕様変更が予定されています
0264デフォルトの名無しさん2007/05/21(月) 19:17:38
D言語は永遠に変り続ける言語
0265デフォルトの名無しさん2007/05/21(月) 19:34:18
mixinに期待。
0266デフォルトの名無しさん2007/05/21(月) 20:04:05
使われはしないがな
0267デフォルトの名無しさん2007/05/22(火) 00:07:19
dsssに対応したIDEがほしくね
0268デフォルトの名無しさん2007/05/22(火) 00:19:41
IDE(゚�听)イラネ
0269デフォルトの名無しさん2007/05/22(火) 00:31:37
\(´ω`)ノ┌┛)`д) ;∴
0270デフォルトの名無しさん2007/05/22(火) 02:38:14
Entice Designer は、よくがんばってると思う。
つーかDFLってシンプルでいいよね
0271デフォルトの名無しさん2007/05/22(火) 03:42:26
いで?
0272デフォルトの名無しさん2007/05/22(火) 04:16:14
中身の頭が別の構造体の構造体を作ろうとするとコンパイラが落ちる。
……ような気がする。詳しい条件はよくわからんけど。

struct S { int a; }
struct S2 { S s; }

void main() { auto b = S2(); }

がとりあえず落ちた。S2の中身をintとSにすると平気。
既出だったらごめん。いまわりと困っている。
0273デフォルトの名無しさん2007/05/22(火) 04:35:34
D言語がC++を駆逐する方法はただひとつ!

Qt並のRADツールを備えたVC並の統合開発環境を無償で提供することだ。

これからのプログラミング言語はライブラリの充実がものをいうのであって、言語仕様は二の次なのだ。
0274デフォルトの名無しさん2007/05/22(火) 05:44:06
struct S { int a; };
struct S2 { S s; };

void main() { auto b = S2(); }
0275デフォルトの名無しさん2007/05/22(火) 07:20:54
>>273
二の次っていうと極端だが、まぁそこ抜きに語るのが「不自然」であるという時代なのはその通り。
0276デフォルトの名無しさん2007/05/22(火) 10:12:33
>>272
落ちなかった。
試したのはWindows版dmdの1.014。
0277デフォルトの名無しさん2007/05/22(火) 13:24:11
>>276
同じなんだけどなあ。
俺の環境かな、とりあえずコンパイラ再インストールしてみる。スレ汚しすまん。
0278デフォルトの名無しさん2007/05/22(火) 15:29:54
D#マダー?
0279デフォルトの名無しさん2007/05/22(火) 16:25:22
>>270
DFLはかなりC#(というか.NET Framework?)の影響を受けているみたいで
先にそっちをやってると自然に使えるね
0280デフォルトの名無しさん2007/05/22(火) 17:27:34
プロパティの定義がもうちょっと楽にならんかなあ。
ゲッタとセッタでプロパティ名を二回書くのはどうも無駄な気がするんだよな。
0281デフォルトの名無しさん2007/05/22(火) 18:32:32
>>280
ttp://www.kmonos.net/alang/wnd/topics/template.ja.html#strparam

かなり便利。
まあ言語のほうでなんか対策欲しいかなとは思う。
0282デフォルトの名無しさん2007/05/22(火) 18:42:15
>>281
メンバフィールドをただラップするだけでないプロパティに対応させるのは無理かね?
0283デフォルトの名無しさん2007/05/22(火) 18:51:14
>>282
メンバになんかの処理を行って返すような場合ってこと?
その「なんかの処理」が汎用的な場合ってあんま無いんじゃないのか。

「なんかの処理をつけ加える」汎用的な方法が欲しいってことならたぶん無理。
0284デフォルトの名無しさん2007/05/22(火) 19:18:00
import std.stdio;

template Property(T, char[] name, char[] getter = null, char[] setter = null) {
static if(getter)
mixin("public T " ~ name ~ "(){" ~ getter ~ "}");
static if(setter)
mixin("public T " ~ name ~ "(T value){" ~ setter ~ "return value;}");
}

class Klass {
mixin Property!(int, "prop", `
return 1;
`, `
writefln(value);
`);
}

void main() {
with(new Klass) prop = prop * 2;
}

こんなんとか。
0285デフォルトの名無しさん2007/05/22(火) 19:28:20
テンプレート引数にデリゲートって言うか処理を書けたらいいのにな。
0286デフォルトの名無しさん2007/05/22(火) 21:39:27
プロパティに関しては、
・クラス外からは読めるが書けない変数
・クラス外からは読めるが書きこみ時はメソッドで処理したい変数
とか欲しくなることはある
速度重視で直接アクセスしたいときに
0287デフォルトの名無しさん2007/05/22(火) 21:49:27
変数返すだけのプロパティはインライン化されるんじゃね?
ちゃんと見てないが。
0288デフォルトの名無しさん2007/05/22(火) 21:53:07
仮想関数だから無理だろ
0289デフォルトの名無しさん2007/05/22(火) 22:07:36
>>280みたいに
ゲッタとセッタでプロパティ名を二回書くのが無駄な場合ってフィールドをpublicでいんじゃね?
0290デフォルトの名無しさん2007/05/22(火) 23:04:49
+=みたいな演算子が使えたりとちょっと挙動が違う。
まあ実際のところはpublicでいいのかもしれない。やらんけど。
0291デフォルトの名無しさん2007/05/22(火) 23:19:42
int型とかならpublicでいいけど、
classとかをプロパティにしたいときはpublicだと困るんじゃないか?
メンバ変数はfinalにならないみたいだし?

class HOGE{
final FUGA fuga;
this(){ fuga = new FUGA; }
}

class FUGA{ int data; }

void main(){
auto hoge = new HOGE;
hoge.fuga = new FUGA;// finalを無視?
hoge.fuga.data = 100;
/+...+/
}
0292デフォルトの名無しさん2007/05/23(水) 00:32:11
mixinスゲー
全然判らん。
0293デフォルトの名無しさん2007/05/23(水) 01:07:08
いいかげんchar[]をstringと表記したいんですが
0294デフォルトの名無しさん2007/05/23(水) 01:08:59
alias char[] string;
0295デフォルトの名無しさん2007/05/23(水) 06:14:27
final answer = true;
0296デフォルトの名無しさん2007/05/23(水) 08:28:42
undefined identifier answer
0297デフォルトの名無しさん2007/05/23(水) 08:32:38
そうはならんだろ。
0298デフォルトの名無しさん2007/05/23(水) 12:09:37
>>291
変更禁止はfinalじゃなくてconstじゃね
02992912007/05/23(水) 15:21:15
なるほど、constか。
コンパイル時に評価できる定数ってなってたからできないかと思ってた。
じゃあ変数に使うfinalってなんだ?
0300デフォルトの名無しさん2007/05/23(水) 20:23:17
>>294
それを世界65億人のphobos内に追記してくれ
0301デフォルトの名無しさん2007/05/24(木) 00:11:18
http://www.vipper.net/vip238377.png
同時に入ってたんだけど結構レアっぽくね?
0302デフォルトの名無しさん2007/05/24(木) 00:12:20
ばかばかばか
誤爆です・・・
0303デフォルトの名無しさん2007/05/24(木) 00:16:17
なるほど。D言語使う香具師の層が理解できたぜ。
0304デフォルトの名無しさん2007/05/24(木) 00:17:15
だが断る
0305デフォルトの名無しさん2007/05/24(木) 01:56:32
>>301
やっぱりD言語使いにはゲームプログラマが多いんだなw
0306デフォルトの名無しさん2007/05/24(木) 02:15:15
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【総合】FF6スレNo.84〜ついでに服も盗んだ〜 [FF・ドラクエ]

これか?
0307デフォルトの名無しさん2007/05/24(木) 02:25:53
>>306
ちげーよ。
0308デフォルトの名無しさん2007/05/24(木) 07:10:26
>>300
typedef enum {false, true} boolean;
0309デフォルトの名無しさん2007/05/24(木) 07:39:58
>>301
手首まだ俺も見たことねえのにうらやましいぜ
0310デフォルトの名無しさん2007/05/24(木) 07:57:50
>>305
ゲームプログラマじゃない俺はどうしたらいいんだろう…
0311デフォルトの名無しさん2007/05/24(木) 13:07:02
今すぐゲームをプログラミングし始めれば
とりあえず歩調は合わせられるぞ。
0312デフォルトの名無しさん2007/05/24(木) 14:57:42
よーしパパmixinでタスクシステム作っちゃうぞーとか言ってるの。もう見てらんない。
0313デフォルトの名無しさん2007/05/24(木) 19:22:32
バージョンアップまーだー?
0314デフォルトの名無しさん2007/05/25(金) 08:30:19
はやく仕様落ち着かせろよといいながら一ヶ月も音沙汰ないと不安になる言語。
0315デフォルトの名無しさん2007/05/25(金) 13:13:21
こういうときに仕事してんのかなー
0316デフォルトの名無しさん2007/05/25(金) 13:25:40
もう一ヶ月か。
さぞすばらしい機能が追加されているに違いない
0317デフォルトの名無しさん2007/05/25(金) 13:39:29
機能毎にbranchを切って、どの時期に何を投入するか決めている気がする。
0318デフォルトの名無しさん2007/05/25(金) 23:43:36
この一ヶ月はDでコンパイラ書いてるんだって
0319デフォルトの名無しさん2007/05/26(土) 00:52:43
いや、コンパイラをコンパイルするコンパイラをDで書いてるのかもしれないぞ
0320デフォルトの名無しさん2007/05/26(土) 01:15:46
>>319
それなんて Lisp ?
0321デフォルトの名無しさん2007/05/26(土) 07:37:13
最近は大抵のコンパイラが自己記述されてるだろ。
0322デフォルトの名無しさん2007/05/26(土) 09:20:45
最近はコンパイラ・コンパイラもないのか・・・・・
0323デフォルトの名無しさん2007/05/26(土) 14:49:38
Dでコンパイラコンパイラをコンパイルするコンパイラを書いてるんじゃね?
0324デフォルトの名無しさん2007/05/26(土) 15:25:01
Dでコンパイラコンパイラをコンパイルするコンパイラをコンパイルしてそのコンパイラコンパイラでコンパイラを作成してるんじゃね?
0325デフォルトの名無しさん2007/05/26(土) 16:34:15
そろそろ天才の登場が待たれるな
0326デフォルトの名無しさん2007/05/26(土) 16:45:49
近代的なコンパイラがアセンブラでイキナリ書かれることは無いだろうから
順々にコンパイラをコンパイルしたコンパイラを遡っていくと何にたどり着くんだろう
0327デフォルトの名無しさん2007/05/26(土) 16:46:59
>>326
インタプリタ
0328デフォルトの名無しさん2007/05/26(土) 16:53:42
>>326
H2O
0329デフォルトの名無しさん2007/05/26(土) 16:56:18
>>326
職人が紙テープにせっせと穴あけたりしてたのにたどり着くんだろうと思うと、ワクワクするなw
0330デフォルトの名無しさん2007/05/26(土) 17:01:07
人間のハンドアセンブルに辿り着くね。
0331デフォルトの名無しさん2007/05/26(土) 17:11:46
>>326
マジレスするとCコンパイラ
お陰でKen Thompsonが自分で言うまで誰もバックドアに気がつかなかった
ttp://memo.xight.org/2006-08-16-5
ttp://cm.bell-labs.com/who/ken/trust.html
0332デフォルトの名無しさん2007/05/26(土) 17:12:55
それはネタで言ってるんだよな?な?
0333デフォルトの名無しさん2007/05/26(土) 17:22:38
意訳。

文字列の型: const(char)[] と cstring

新しいconst/invariant/finalの制度のもとでは、文字列はどうなりますか?
他の言語の経験によると、文字列はイミュータブルであるべきであると思います。
定文字の配列を表すために、こう書くでしょう:

    const(char)[]

しかし、それが明確であるのにキーボードですらすらと打てません。文字列が非常に一般的であるのでこのように別名を必要とします:

    alias const(char)[] cstring;

何故 cstring なのか。それは"文字列"はモジュール名と公共(common)の変数名の両方に表れるからです。また、cstringの導入ははwcharの文字列の為のwstringと、dcharの文字列の為にdstringを含みます。

その一方で文字列リテラルはinvariantにするでしょう(読み込み専用メモリに入れることができるのを意味します)。なので:
    typeof("abc")
は
    invariant(char)[3]
となります。

暗黙的にinvariantをconstにキャスト可能です。

私がソースコードをいじくったところ、かなりうまく解決するように思えます。

何故cstringをinvariant(char)[]のエイリアスにしないのか。そのようにすると、文字列は確かに不変になるでしょう。 理由はミュータブルをinvariantに暗黙的にキャストすることができないということです(これはコードには多くのキャストがあるのを意味してます)。
キャストはハンマーであり、あまりにたくさんのキャストを必要とするコーディングスタイルは悪いコーディングスタイルです。
0334デフォルトの名無しさん2007/05/26(土) 17:33:01
どこが意訳なんだよ。
0335デフォルトの名無しさん2007/05/26(土) 17:40:26
引数とか完全に禁止したのをデフォにして、
色々許可する方を指定した方がいいと思う。
0336デフォルトの名無しさん2007/05/26(土) 17:41:18
原文はどこの話だろう
0337デフォルトの名無しさん2007/05/26(土) 17:59:48
>>333の要点をまとめると
-型としてinvariant(type)とconst(type)が追加になる
-const(type)は値が一定。ようは実行時に一意に決まる。
-invariant(type)は値が不変。ようはコンパイル時に一意に決まる。
-暗黙的にinvariantをconstにキャスト可能
-暗黙的にミュータブルをconstにキャスト可能
-暗黙的にミュータブルをinvariantにキャストは不可
ってことだと思う。間違ってたらスマソ。
0338デフォルトの名無しさん2007/05/26(土) 18:52:25
ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=8766
ココね。>>333の訳は翻訳機にかけたような文体で漏れは好きじゃないなぁ(ゴメンね)
ちなみに、漏れはBjörklund氏の「cstring?ハァ?ダッセー(プッ」的な意見に賛成だ。
0339デフォルトの名無しさん2007/05/26(土) 19:00:29
俺もBj?rklund氏と同じでcstringよりはstrの方がいいなぁ。
ただしstr/cstr/istrと分かれるならそっちの方が良い。
0340デフォルトの名無しさん2007/05/26(土) 19:01:27
ややこすぃ!
0341デフォルトの名無しさん2007/05/26(土) 19:04:56
cstringにしたら
UTF-16版がwcstringになる。
トイレかよ。
0342デフォルトの名無しさん2007/05/26(土) 19:13:30
標準の文字列をイミュータブルにしてスレッドやパフォーマンス以外でなんか良い事ってあるの?
文字列のずらしとかが遅くなるの嫌なんだけど。
0343デフォルトの名無しさん2007/05/26(土) 19:15:11
参照の変更で元の文字列まで変わっちゃったとかいう
バグが起きなくなる。
0344デフォルトの名無しさん2007/05/26(土) 19:19:20
現状では関数の引数でinだったらコピーされてるから問題無い気が。

>>341
それ、何てMozilla?
0345デフォルトの名無しさん2007/05/26(土) 19:19:23
>>343
これパフォーマンス厨が良くやらかすんだよなwwwwwww
0346デフォルトの名無しさん2007/05/26(土) 19:20:14
職業柄wcはオメガシーって読んじゃうよ。
0347デフォルトの名無しさん2007/05/26(土) 19:26:56
>>341
cwstringだろ、常識的に考えて。
0348デフォルトの名無しさん2007/05/26(土) 19:29:39
結局char[]のaliasかいな。
"あいう"[0] がどうしても1文字目じゃなく1バイト目になってしまうのは
この言語の宿命なのか。

しかしconst(type)とかinvariant(type)とか、
いつの間に()が要るようになってるんだろう。
前置キーワード方式じゃダメだったのかな。
0349デフォルトの名無しさん2007/05/26(土) 19:30:49
wchar[]使えばいいじゃん
0350デフォルトの名無しさん2007/05/26(土) 19:34:51
>>344
inをコピーじゃなくして、デバッグビルド時にoutでassertかませば性能面の問題も起きないと思うけどなぁ。まぁマルチスレッドで問題起きるけど。
0351デフォルトの名無しさん2007/05/26(土) 19:42:16
今の時代100MBあるchar[]でも無ければパフォーマンスなんてほとんど変わらんだろ。
組み込み機器じゃGCとかあるようなDなんて使えないだろうし。
0352デフォルトの名無しさん2007/05/26(土) 19:44:25
>>342
データの内容が書き換わらないことが保証されてると
コードがとても単純になって可読性・保守性がよくなる。


# でも一時変数を使い回しまくってると意味無いな……ええい引数に代入するな!
# しかもすぐ捨てる作業用オブジェクトを! しかもfor文の中のif文の中で!
# for文抜けた後でも参照してるじゃねぇか、このコードまずいだろ!?
0353デフォルトの名無しさん2007/05/26(土) 19:45:42
constとかfinalにすれば引数に代入なんかできないだろ。
いっそのこと標準でinにしちゃえばいいのにな。
0354デフォルトの名無しさん2007/05/26(土) 19:48:53
>>352
># でも一時変数を使い回しまくってると意味無いな……ええい引数に代入するな!
inになってる引数に代入してそのまま返してる関数が多数な俺。
やっぱりauto rv=arg;って一行入れるべきだよなぁ>俺。
># しかもすぐ捨てる作業用オブジェクトを! しかもfor文の中のif文の中で!
># for文抜けた後でも参照してるじゃねぇか、このコードまずいだろ!?
これは現状でもD言語では無問題だしなぁ。
0355デフォルトの名無しさん2007/05/26(土) 20:02:52
const char[] str; という宣言があったとき、
* 変数 str は const
* 変数 str の型は、(const char[])
のどっちなの?
0356デフォルトの名無しさん2007/05/26(土) 20:06:36
>>355
現状ではどっちでも大差無い。まぁソース嫁。
0357デフォルトの名無しさん2007/05/26(土) 20:44:57
配列であることを意識しないでいいような構文になればなんでもいいや・・・
0358デフォルトの名無しさん2007/05/26(土) 21:53:50
>>351
GCに怯えすぎ。
組み込みだろうと問題にならない。
0359デフォルトの名無しさん2007/05/26(土) 22:36:54
こわがりすぎー :)
0360デフォルトの名無しさん2007/05/26(土) 22:43:39
Dで書かれたOSってありますか?
0361デフォルトの名無しさん2007/05/26(土) 22:49:25
DOS
0362デフォルトの名無しさん2007/05/26(土) 23:18:14
おお、組み込みでも既にGC載ってるのか。

って思ったけど携帯とかずっと前からJava入ってるんだよな……
DのGCくらい携帯以外でも楽勝なのか。
0363デフォルトの名無しさん2007/05/26(土) 23:35:42
>>361
お前のセンスに嫉妬
0364デフォルトの名無しさん2007/05/26(土) 23:53:06
>>361
ほほう
これはなかなか
0365デフォルトの名無しさん2007/05/26(土) 23:57:53
>>361
わずか六分か。脱帽だな。
0366デフォルトの名無しさん2007/05/27(日) 03:02:59
いつまでこの地味な状況って続くんですか?
0367デフォルトの名無しさん2007/05/27(日) 03:03:37
誰かがキラーライブラリつくるまで。
0368デフォルトの名無しさん2007/05/27(日) 03:10:52
tangoはキラーすぎて逆に駄目そうだな
0369デフォルトの名無しさん2007/05/27(日) 06:34:10

まぁ DOS くらいならいまの D でも書けそうだ w

0370デフォルトの名無しさん2007/05/27(日) 11:09:29
DのGCってメモリ確保関数さえあれば動くんだよね?
0371デフォルトの名無しさん2007/05/27(日) 13:35:52
スレッドも必要です><
0372デフォルトの名無しさん2007/05/27(日) 14:39:06
OSがGCを実装して、下位のプログラムがメモリを管理しなくてすむようになればいいなあ。
0373デフォルトの名無しさん2007/05/27(日) 14:40:18
>>372
あなたがウォルターか
0374デフォルトの名無しさん2007/05/27(日) 14:43:10
>>372
MonaOSがそんな感じだったような。ただD言語のgcは一部の型を把握するようになったから、そう簡単にはいかないだろうけど。
0375デフォルトの名無しさん2007/05/27(日) 14:48:45
すいません、ちょっと質問させてくださいな。
D言語で、interactive shell(pythonみたいに、対話的に一行ずつ
実行できるようなもの)ってありますでしょうか。
その場でスクリプトをコンパイルして実行という機能がはあったんですが・・・
0376デフォルトの名無しさん2007/05/27(日) 15:03:00
>>374
共通型システムみたいなものを導入すればいいんじゃね?
0377デフォルトの名無しさん2007/05/27(日) 15:06:52
>>376
まぁそうだけど。
0378デフォルトの名無しさん2007/05/27(日) 15:08:12
>>374
Monaにそんな機能はないよ。正直メモリ関連は結構ややこしい方だと思う。
0379デフォルトの名無しさん2007/05/27(日) 18:00:39
>>375
ないと思う。
そういう用途としては python なり ruby なりを使った方がいい。
0380デフォルトの名無しさん2007/05/27(日) 19:47:25
普通にbashでいいだろ
0381デフォルトの名無しさん2007/05/27(日) 19:51:52
dsh
0382デフォルトの名無しさん2007/05/27(日) 19:57:30
(゚�听)イラネ
03833752007/05/27(日) 20:48:25
レス下さった方々、どうもありがとうございます。
自分でもいろいろ探していたんですが、やっぱりないんですね〜残念。
実は主にpythonとC++を使っているんですが、どっちも一長一短でなにかいい方法が
ないか探していたんです。D言語でまとめられたら、凄くハッピーだったのですけど。

主に使う用途としてはデータ解析などなので、bashだとちょっと厳しいです。
変数の内容を保持したまま、対話的に関数が呼べるものを探していました。

話はちょっと変わりますが、Dの言語仕様、ver1で一旦新しい追加は置いておいて、
bug fix重点的にやるって噂ですね。
これで少しは落ち着いてアプリが作れる・・・かな?
0384デフォルトの名無しさん2007/05/27(日) 20:51:20
>>383
そんなことは無いが、後方互換は保たれてる。
0385デフォルトの名無しさん2007/05/27(日) 21:12:46
ちょっと前に予約語の追加があったばかりじゃないか・・・
0386デフォルトの名無しさん2007/05/27(日) 21:29:38
もうすぐ2.0betaが出てくるという話だからね。
そっちが優先されるかも。
0387デフォルトの名無しさん2007/05/27(日) 21:31:52
今MLで議論されている
const/invariant/finalの話ってどう思う?
はっきり言ってinvariant要らないような気がするんだが。
0388デフォルトの名無しさん2007/05/27(日) 21:37:52
別にあってもいいと思うよ
0389デフォルトの名無しさん2007/05/27(日) 21:38:06
ちゃんと追ってなくてよくわからんのだが、どういう機能?
0390デフォルトの名無しさん2007/05/27(日) 21:54:49
>>389
以下、Walter氏が示したcode例

int x = 3;
final int* p = &x;
p = null; // error, p is final
*p = 1; // ok

const(int)* q = null;
q = &x;  // ok, q is not const, and now *q is 1
*q = 2;  // error, *q is const
*p = 5;  // ok, but now *q is 5, too!
x = 6;   // ok, but now *q is 6

invariant(int)* s = null;
s = &x;  // error, cannot implicitly convert int* to invariant(int)*
int y = 4;
s = cast(invariant(int)*)&y; // ok, trust programmer that y is immutable
*s = 3;  // error, *s is immutable
y = 5;   // undefined behavior, as y is never supposed to change,
         // and compiler assumes *s is still 4

<X>(char)[] parm; に対して
*-------------------------------------*
| <X>         + parm.ptr  |  parm[0]  |
|-------------+-----------------------+
| const       | mutable   | immutable |
| final       | immutable | mutable   |
| invariant   | mutable   | immutable |
| (何も無し)  | mutable   | mutable   |
*-------------------------------------*
0391デフォルトの名無しさん2007/05/27(日) 21:58:59
(>>390の続き)

constな値へのポインタは
指している先が別のところで書き換えられることが
有り得るのに対して、
invariantな値へのポインタは
書き換わることがないと仮定されている
(書き換えると未定義動作になる)

おそらく関数引数(const)とリテラル(invariant)を
想定していると思われるが、
invariantってのは結局コンパイラ側の都合で
あった方がいいというだけのように思えるんだ。

ちなみに
Note that int* can be implicitly converted to const(int)*, and invariant(int)* can be implicitly converted to const(int)*.
(意訳) int*はconst(int)*に暗黙的にキャストされ、invariant(int)*は暗黙的にconst(int)*にキャストされます
とのこと。
0392デフォルトの名無しさん2007/05/27(日) 22:01:12
> invariantな値へのポインタは
> 書き換わることがないと仮定されている
訂正
> invariantな値へのポインタは
> 指している先の値が書き換わることがないと仮定されている
0393デフォルトの名無しさん2007/05/27(日) 22:14:16
ありがとう。なんか豪い煩雑になるなあ。

しかし、invariantはプログラマは滅多に使う機会ないんでない?
最適化効率が上がるんならあってもいいように思うな。
0394デフォルトの名無しさん2007/05/27(日) 22:18:09
使用頻度如何では invar くらい短くして欲しいが、
あまり使わないのなら長い方がいいな。
0395387=390-3922007/05/27(日) 22:40:15
もう少し考えてみたが、
invariantな値というのはつまり、
 "あいうえお"
 [ 1, 2, 3, 4, 5 ]
などのコンパイル時に決定される値ということだよな。
([ x, x+1, x+2 ]とかは実行時に決定されるので範疇に入らない)

これらはconst値に暗黙変換されるから、使う方としては
 const(char)[] s = "あいうえお";
の様にconstで受ければいいのか。
それなら invarint〜 と頻繁に書く必要はほとんどないな。
*でも結局はconstで受けるんだから、>>393が言うような最適化効率には
 あまり貢献しないような…? あ、autoを使えってことか?

ただ、
 char[] = "あいうえお";
はたぶん暗黙変換エラーになると思われるので、
そのあたりを意識してCodeを書けということだろうか。
0396デフォルトの名無しさん2007/05/27(日) 23:38:14
>>395
char[] = "あいうえお"
はコピーになってくれないと正直困る。
0397デフォルトの名無しさん2007/05/28(月) 14:59:25
これネイティブjava?
0398デフォルトの名無しさん2007/05/28(月) 15:01:45
いいえDです
0399デフォルトの名無しさん2007/05/28(月) 15:02:07
いちいち
char[] = "あいうえお".dup;
しろってことになるかもな
0400デフォルトの名無しさん2007/05/28(月) 15:18:08
またウォルターたんは変なことを思いついたもんだな
失敗だったらバッサリ切り捨てるだろうから心配はしてないがw
0401デフォルトの名無しさん2007/05/28(月) 15:37:26
もともと文字列リテラルの書き換えは未定義動作なんだよな。
 http://www.kmonos.net/alang/d/arrays.html#strings
 > 文字列リテラルは immutable (読み取り専用)です。
 > char[] str;
 > char[] str1 = "abc";
 > str[0] = 'b'; // エラー。"abc" は読み取り専用。クラッシュの可能性あり
現状でも、dupるなりしなきゃまずいと思う。

0402デフォルトの名無しさん2007/05/28(月) 15:58:08
というかなんで文字列リテラルがimmutableなんだ?
意味なくね?
constとかの場合のみでよくね?
0403デフォルトの名無しさん2007/05/28(月) 17:29:08
文字列リテラルが immutable なのは普通だろ。
C/C++ だってそうだ。

"abc" と "bc" ってのがあった場合に
重ねて置ける最適化ができるというのもそうだけど、
唯一しかないものをホイホイ書き換えられても困る。

問題は char[] str1 = "abc"; とした時に、
str1 が文字列リテラル自身を指すことになってしまう点。
C/C++ みたいに、文字列リテラルで配列変数を初期化する場合は、
特別にコピーが発生するようにすべき。
0404デフォルトの名無しさん2007/05/28(月) 18:36:16
>>403
そこらへんが上にあった変更で改善されるわけだな。
書き換えるならdupれ、書き換えないならconstにしろ、
という感じか。
0405デフォルトの名無しさん2007/05/28(月) 18:51:33
immutable なら文字列リテラル自身を指すようになって構わないけど、
そうでなければ自動的にコピーして欲しい。
その方が自然だと思う。
0406デフォルトの名無しさん2007/05/28(月) 19:00:54
ウォルターは天才なので彼に全て任せておけば問題ない
0407デフォルトの名無しさん2007/05/28(月) 19:13:42
まあ糞言語だがな
0408デフォルトの名無しさん2007/05/28(月) 19:21:51
eclipse プラグインまだ?
0409デフォルトの名無しさん2007/05/28(月) 21:03:27
あるがな。
0410デフォルトの名無しさん2007/05/28(月) 23:44:31
自動的にコピーだとコストに気がつかない可能性があるから、エラーの方が良くない?
0411デフォルトの名無しさん2007/05/28(月) 23:51:48
配列のリテラルによる初期化でコストが発生するのはむしろ普通のことでは?
0412デフォルトの名無しさん2007/05/29(火) 00:11:28
const(char)[] foo = "str"; // 参照代入
char[] bar = "str"; // コピー

とか。ややこしいだけか。
0413デフォルトの名無しさん2007/05/29(火) 01:59:03
char[] hoge = "fuga" + "hage" + "boke";

コピーは何回発生するでしょうか?
0414デフォルトの名無しさん2007/05/29(火) 02:05:04
ベクトル演算は実装されていません><
0415デフォルトの名無しさん2007/05/29(火) 02:34:16
どうもコンパイル開発のしやすさに重点が置かれてるのかな?
プログラムは日増しに組みにくくなってる。
0416デフォルトの名無しさん2007/05/29(火) 02:56:24
コンパイラ開発の楽さは重点に置いてる一つではあるんだけど、
あまりに組みやすさが犠牲になると流石に困るよな。
0417デフォルトの名無しさん2007/05/29(火) 03:02:36
日増しにっていうほど変わってないだろ。
0418デフォルトの名無しさん2007/05/29(火) 05:53:17
>>413
コンパイル時解決されないか?
0419デフォルトの名無しさん2007/05/29(火) 12:43:08
GUIライブラリならいまはどれがベターですか?
0420デフォルトの名無しさん2007/05/29(火) 15:08:06
WindowsならDFLじゃないかな。
クロスプラットフォームのならDWTか。
0421デフォルトの名無しさん2007/05/29(火) 16:26:34
任意の比較関数を使ったソートってどうやってやるんですか?
それ用にクラスつくったりstdlib.c.qsortを使えというのはなしで
0422デフォルトの名無しさん2007/05/29(火) 17:16:43
デリゲート
0423デフォルトの名無しさん2007/05/29(火) 17:56:27
>>422
どうもです。でも理解できません。
delegate使ってどうやってやるんですか?sortはdelegateを受け取らないと思います。
また関数ポインタでやるならqsortと変わらないと思います。
単純なchar[][]の場合もdelegateで解決できるんでしょうか?
0424デフォルトの名無しさん2007/05/29(火) 18:40:05
ユーザー定義型じゃないなら専用の関数作るしか無いと思う
0425デフォルトの名無しさん2007/05/29(火) 19:12:58
char[][] ss= ["hello","test"];
foreach( int i; char[] s; ss) {
writefln( s);
}

こんなのって無理ですか?
0426デフォルトの名無しさん2007/05/29(火) 19:17:40
foreach( int i; char[] s; ss) {
は
foreach( int i, char[] s; ss) {
だな。
0427デフォルトの名無しさん2007/05/29(火) 19:26:44
ああ・・・
ありがとうございます・・・
すいませんでした
0428デフォルトの名無しさん2007/05/29(火) 19:30:08
ドンマイ
0429デフォルトの名無しさん2007/05/29(火) 23:33:24
ドンマイ
0430デフォルトの名無しさん2007/05/30(水) 06:03:58
Win32APIのwrapperみたいなのあります?
自分で定義して直接呼ばないとだめ?
0431デフォルトの名無しさん2007/05/30(水) 06:10:09
あるよ
0432デフォルトの名無しさん2007/05/30(水) 08:46:11
>>423 少し反則気味だけど、こんなんとか
import internal.qsort;
T[]sort(T)(T[]a,bool delegate(T,T)dg){
  static class Ti : TypeInfo{
   bool delegate(T,T)dg;
   override size_t tsize(){return typeid(T).sizeof;}
   override int compare(void*a,void*b){
     return dg(*cast(T*)a,*cast(T*)b) ? -1 : dg(*cast(T*)b,*cast(T*)a);
   }
  }
  scope t=new Ti;t.dg=dg;
  _adSort(Array(a.length,a.ptr),t);
  return a;
}
import std.stdio;
void main(){
        int []a=[3,4,2,4];
        writefln(a);
        a.sort((int a,int b){return a<b;});
        writefln(a);
        a.sort((int a,int b){return a>b;});
        writefln(a);
}
0433デフォルトの名無しさん2007/05/30(水) 09:20:34
>>431
ありがとうございます
フレームワークは何が標準ですか?
04344232007/05/30(水) 10:55:14
>>432
レスありがとうございます。
テンプレート+デリゲートですか。私の足りない頭では理解が・・・
残念ながらこのコードはgdcだとコンパイルが通りませんでしたが、参考にして
ポートしてみます。
0435デフォルトの名無しさん2007/05/30(水) 10:59:17
>>436
ありがとうございます。
ところでカレーはスパイスだけでも作れますか?
0436デフォルトの名無しさん2007/05/30(水) 17:35:09
tango上でのbox(variant型)についての議論で
http://www.dsource.org/projects/tango/forums/topic/12#468

http://www.prowiki.org/wiki4d/wiki.cgi?DanielKeep/Variant
phobos,tango両方で動くやつを書いた人がでました

よさげ
0437デフォルトの名無しさん2007/05/30(水) 19:44:49
>>433
ttp://www.prowiki.org/wiki4d/wiki.cgi?WindowsAPI
ttp://wiki.dprogramming.com/Dfl/HomePage
0438デフォルトの名無しさん2007/05/31(木) 12:30:53
Vriant型って何が便利なの
0439デフォルトの名無しさん2007/05/31(木) 16:46:59
>>436
これはいいな
0440デフォルトの名無しさん2007/05/31(木) 22:38:02
一つの構造体に二つのソートを登録したい場合は
どうしたらいいのでしょうか?
(この発想からしてダメかも知れませんが…)

一回目は配列全体をメンバ変数intを対象にしてソートします
二回目はスライスを用いて
{0..8}のように特定の範囲のみを相手に
メンバ変数のchar[]を対象にソートしたいのですが
なかなか良い作り方が分からず…

少し上でもソートが出てましたが
難しいそうですね…
どのようにすれば良いでしょうか
0441デフォルトの名無しさん2007/05/31(木) 23:27:32
ごく普通に、opCmp内部で変数みてモードかえればいんじゃね?
0442デフォルトの名無しさん2007/05/31(木) 23:37:04
つ
///クイックソート
template quickSort(alias cmp){
void quickSort(T)(T[] a){
void loop(int l, int r){
auto i = l;
auto j = r;
auto pivot = a[(l + r) / 2];

for(;;){
while(cmp(a[i], pivot)){
i++;
}
while(cmp(pivot, a[j])){
j--;
}
0443デフォルトの名無しさん2007/05/31(木) 23:37:49
if(i >= j){
break;
}
auto tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
j--;
}
if(l < i - 1){
loop(l, i - 1);
}
if(r > j + 1){
loop(j + 1, r);
}
}

loop(0, a.length - 1);
}
}

///比較関数
bool more(T)(T a, T b){
return a < b;
}
0444デフォルトの名無しさん2007/05/31(木) 23:56:01
やっぱりC++のSTLでstd::algorithmに相当するのがDにもあると便利だよね。
ソート以外にもbinary_searchとかrandom_shuffle, find_ifとか使いでがあるし。
クイックソートだけじゃなくてマージソートも欲しい。
import std.algorithmとかで実装されないかな。
0445デフォルトの名無しさん2007/06/01(金) 00:04:08
折角 lambda あるんだしな。
0446デフォルトの名無しさん2007/06/01(金) 02:33:17
ていうか今のDには主要なテンプレートライブラリがないもんなー
DTLはどうなったんだ?

bindならid:shinichiro_hさんが
std::functionalならid:rinsetさんがだいぶ前にやってたような気がする
0447デフォルトの名無しさん2007/06/03(日) 00:27:52
このスレのレベルが急速に低下してるな……
0448デフォルトの名無しさん2007/06/03(日) 00:31:45
>>447
各所で爆釣れワロタ
0449デフォルトの名無しさん2007/06/03(日) 00:45:42
> 爆釣れ
0450デフォルトの名無しさん2007/06/03(日) 08:46:43
しかし本当に音沙汰ないなあ
0451デフォルトの名無しさん2007/06/03(日) 10:09:15
SWTを移植してるひといますか?
0452デフォルトの名無しさん2007/06/03(日) 12:04:23
tioportっつ〜、javaのリソースをDに変換するツールのプロジェクトがあって、
SWTも対象だったような・・・
0453デフォルトの名無しさん2007/06/03(日) 12:06:48
>>451
DWT
0454デフォルトの名無しさん2007/06/03(日) 19:10:28
>>451
k.inabaさんが紹介してたよ
つhttp://www.kmonos.net/alang/wnd/topics/tioport.ja.html
0455デフォルトの名無しさん2007/06/06(水) 00:54:04
英語の公式サイトでdmdをダウンロードして
-vでバージョンを確認したらdmd 1.010なんだけどこれが最新?
このスレに1.014という記述があるんだけど・・・
0456デフォルトの名無しさん2007/06/06(水) 00:57:55
ChangelogのページからDLできました。
0457デフォルトの名無しさん2007/06/06(水) 06:27:01
static コンストラクタやデストラクタがある D だと、
シングルトンパターンってあんま意味ないのかな?
初期化のタイミングを調整できるって程度か。
0458デフォルトの名無しさん2007/06/06(水) 11:22:54
もしかして
class Hogehoge {
static:
    fugafuga;
}
ってクラスの先頭にstatic:つければほぼシングルトンパターンじゃね
0459デフォルトの名無しさん2007/06/06(水) 11:24:30
それでも static this やらはちゃんとstatic付けないとダメだけどね
0460デフォルトの名無しさん2007/06/06(水) 12:50:39
それどこのJava?
0461デフォルトの名無しさん2007/06/06(水) 16:08:02
D 1.015
0462デフォルトの名無しさん2007/06/06(水) 16:30:38
きたああああああああああああああああああああああああああ
0463デフォルトの名無しさん2007/06/06(水) 16:31:20
New/Changed Features
該当なし

しょぼーん
0464デフォルトの名無しさん2007/06/06(水) 16:32:54
バグ抜きだけか
0465デフォルトの名無しさん2007/06/06(水) 21:02:49
>>208 のバグはまだ直ってないな
気がついてないんだろうか
0466デフォルトの名無しさん2007/06/06(水) 21:04:30
誰も報告してないんじゃないの?
0467デフォルトの名無しさん2007/06/06(水) 22:56:27
報告しとけよw
誰か報告する(した)人いる?
0468デフォルトの名無しさん2007/06/06(水) 23:20:43
なんかニュースグループみてみたら
リリース関係についてなかなかおもしろい議論がされてた

それを受けて開発参加者のうちの1人(?)からmy visionとして
・あと1・2ヶ月でTangoリリース
・2008年はじめごろにD2.0リリース

というロードマップが示されてたのでいちお報告
0469デフォルトの名無しさん2007/06/07(木) 02:28:20
とりあえずposeidonに期待と言っておく。
0470デフォルトの名無しさん2007/06/07(木) 07:44:28
連想配列リテラル、キーの文字列を同じ長さにしないといけないのか・・・
0471デフォルトの名無しさん2007/06/07(木) 11:53:43
>>467
むしろお願いします

>>470
例によってcastが必要だな
//for dmd 1.015
void main(){
char[][char[]] s = [cast(char[])"key_hoge":cast(char[])"hoge","key_hogehoge":"hogehoge"];
}
0472デフォルトの名無しさん2007/06/07(木) 14:12:46
C#のArrayListのように型関係なく追加できるものってありますか?
0473デフォルトの名無しさん2007/06/07(木) 15:24:22
動的配列
0474デフォルトの名無しさん2007/06/07(木) 15:46:36
.NETよーしらんけど、こんなん?
import std.boxer;
class ArrayList {
Box[] array;
int Add(T)(T x) {
int idx = array.length;
array.length = array.length + 1;
array[idx] = box(x);
return idx;
}
int opApply(int delegate(ref Box) dg) {
int result = 0;
for (int i = 0; i < array.length; i++) {
result = dg(array[i]);
if (result) break;
}
return result;
}
}
0475デフォルトの名無しさん2007/06/07(木) 16:30:20
あーありがとございます。
0476デフォルトの名無しさん2007/06/08(金) 02:30:31
とてもいいコンパイラになってきたと思うけど悲惨な言語にもなりつつあるな。
0477デフォルトの名無しさん2007/06/08(金) 05:03:23
弩言語
0478僕は上げたい2007/06/08(金) 05:27:29
すみません ものすごくスキルの無い、低レベルでくだらない質問です。

int main(char[][] args)
{
 printf("吉田十四朗です。一応180cmのイケメン19歳です。\n");
retrun 0;
}

WinXpでこれを普通にコンパイルしようとするとUTF-8がどうのこうのと文句いってコンパイルできません。それで、ソースの保存の際にUNICODEでソースを
保存してコンパイルすると、きちんとコンパイルできるのですが、激しく
文字化けをします。 どうしたらいいのでしょう?
0479デフォルトの名無しさん2007/06/08(金) 05:42:13
ウィンドウズのコンソールにちゃんと表示したいなら
std.windows.charset だかに入ってるtoMBSzを使ってS-JISに変換とかしないとだめぽいよ
0480デフォルトの名無しさん2007/06/08(金) 07:40:43
つまり、こういう事だな。
import std.windows.charset;

int main(char[][] args)
{
  char[] msg = "吉田十四朗です。一応180cmのイケメン19歳です。\n";
  printf("%s", toMBSz(msg));
}

>>478
もっと言うなら、k.inabaさんのtxとか使ったほうが良い。
後はココを読めばおk
ttp://www.kmonos.net/alang/wnd/topics/pitfall.ja.html
0481デフォルトの名無しさん2007/06/08(金) 07:47:22
>>471
m(_ _)mありがとうございます
0482デフォルトの名無しさん2007/06/08(金) 07:53:24
あーでも、
import std.stdio;
import std.windows.charset;

void main()
{
  char[] msg = "ほげ!";
  printf("%s", toMBSz(msg));
  writefln("%s", msg);
}

こういうコードで、UTF-8なコンソールだと、toMBSzの方が化けるな・・・
一回の出力で違う文字コードがあると化けるって事か。
でも、これって、一行ずつバッファしててそのバッファ毎にコード変えていれば、表示できなくね?
struct LineBuffer
{
  struct LineBuffer *next;
  struct LineBuffer *prev;
  char *data;
  unsigned long length;
  unsigned int code_page;
};
みたいなのでさ。
0483デフォルトの名無しさん2007/06/08(金) 15:20:11
extern (C) {
 void hoge(int);
}
T hoge(T)(T[] a) {
 return a[0];
}
void main() {
 int[1] a;
 writefln(a.hoge());
}
これで、conflict するのは仕様?
0484デフォルトの名無しさん2007/06/08(金) 22:58:10
>>471
おk つたない英語で(しかもつづり間違えたw)報告しておきました
まだ認知されてないバグだったようです

>>483
スマン 漏れにはよくわからないがtemplete書かずにそういうのができるんだっけ?
0485デフォルトの名無しさん2007/06/08(金) 23:25:56
>>471
"string literal"[]
でchar[]型になるよん。
0486デフォルトの名無しさん2007/06/08(金) 23:47:15
>>484
乙
どこに報告したの?
0487デフォルトの名無しさん2007/06/09(土) 00:35:41
http://d.puremagic.com/issues/show_bug.cgi?id=1262
コレでしょ。
0488デフォルトの名無しさん2007/06/09(土) 13:41:41
ツリー状になってるリンクたどったらなんか関係ないページに飛ばされるし
ログインしないと見ることもできないのか?
使い方わかんね・・・orz
0489デフォルトの名無しさん2007/06/09(土) 18:53:11
>>487
そうそれです

>>488
ログインとかはないはず・・・
ひょっとしてニュースグループ全体のツリーに飛んじゃった?


なんか夏にD言語のカンファレンスがアメリカで開催されるらしいけど
誰か日本から参加する人いるのかな・・・
0490デフォルトの名無しさん2007/06/09(土) 23:07:44
>>489
へ?マジで?
生Walterタソが見れるのか。
0491デフォルトの名無しさん2007/06/09(土) 23:14:27
>>489
ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.bugs&article_id=11355
こっちに飛んでから下のツリーを辿るとおかしなページに飛ばされるような
最初のツリーに載っている返事はどうやったら読めるのだろう
0492デフォルトの名無しさん2007/06/09(土) 23:16:02
ああ,アドレスから .bugs が抜け落ちてる・・・バグ報告サイトのバグか(^^;
0493デフォルトの名無しさん2007/06/09(土) 23:33:02
ほんとだ バグだw
ニュースサイト全体のツリーでbugsのリストを取得してから
>>491のページに行くとちゃんと.bugsがつくから
サイト全体のリストを通さず直に行くっていうのが仕様外なのかなw
微妙にリスト表示のページも変な挙動するなと思ってたら・・・

んじゃこれも報告しとく
0494デフォルトの名無しさん2007/06/10(日) 16:39:08
eclipse+ddbg+descentの構成でデバッガ、まともに動いている人いませんか?

ddbgによるステップ実行はできているようなのですが、Eclipseとうまく連携できていないようで、
ソースファイルを見つけることができず、ステップ実行している箇所の矢印が現れませんorz
Eclipseのソース・ルックアップ・パスの編集は、しっかり行っているつもりです。
現在、疑っているのはコンパイルとリンク時のパラメータ設定ですが、
他に出来ている方がいないようでしたら諦めようかと・・・



0495デフォルトの名無しさん2007/06/11(月) 03:32:12
DってARM用バイナリとか作れるんかな?
WindowsCEで動く小物とか作りたいんだけど。
0496デフォルトの名無しさん2007/06/11(月) 03:42:15
GCCはARMにも対応してるんじゃなかろうか。
0497デフォルトの名無しさん2007/06/11(月) 05:12:54
ttp://www.steinmole.de/d/arm-wince-pe-gdc.tar.bz2
0498デフォルトの名無しさん2007/06/11(月) 08:25:06
>>494
ttp://d.hatena.ne.jp/haru-s/20061126/1164564951
この辺参考にならん?ーgオプションはつけてるよねぇ
0499デフォルトの名無しさん2007/06/13(水) 02:55:51
>>485
しらんかった・・・
0500デフォルトの名無しさん2007/06/13(水) 03:34:17
cast(char[])"hoge" as "hoge"[]
cast(char[])"hoge" as "hoge"c[]
cast(wchar[])"hoge" as "hoge"w[]
cast(dchar[])"hoge" as "hoge"d[]
0501デフォルトの名無しさん2007/06/13(水) 17:04:25
ALLPaGeD is an Attributed LL(*) Parser Generator for D
ttp://mainia.de/allpaged.zip
0502デフォルトの名無しさん2007/06/13(水) 17:56:45
おーるぺーじでぃー?
0503デフォルトの名無しさん2007/06/13(水) 18:10:16
char[][] libs = listdir(source,"*.lib");

foreach(char[] lib;libs)
{
char[] s = lib;
char[] d = std.path.join(destination,getBaseName(lib));
char[] command = std.string.format("%s \"%s\" \"%s\"",converter,s,d);

dout.writefln(command);

exec(converter,[converter,s,d]);
// system(command ~ ">dump.log");
}

なぜ動かない。execだとforeachにならずにexecからプログラム抜ける。
ほかのソフトを起動する方法はほかにないのだろうか?

// systemだと正常に動くけど…
0504デフォルトの名無しさん2007/06/13(水) 19:14:09
>>503
spawn系では?
0505デフォルトの名無しさん2007/06/13(水) 20:10:48
Shift_JISで記述されたファイルの内容を正規表現で解析したいのですが、
正規表現中にユニコードの文字が入ると案の定うまくいきません。

うまいことShift_JISの文字列を読み込んで処理する方法はないものでしょうか。
対象のファイル自体をUTF-8に変換するってのはできればナシでお願いします。
(他のプログラムが吐くログが本来の対象なので)
----- main.d -----
import std.regexp;
import std.stdio;
import std.stream;

int main(char[][] args){
auto r = new RegExp("(ほげ)+");
auto fp = new BufferedFile("hoge.txt", FileMode.In);
foreach(char[] line; fp){
foreach(char[] s; r.exec(line))
writefln(s);
}
return 0;
}
----- hoge.txt (Shift_JIS) -----
ほげ
ほげほげ
もげ
---------------------------
0506デフォルトの名無しさん2007/06/13(水) 20:15:30
ファイル読み込み時に逐次ShiftJISからUTF-8に変換するしかなくね?
あるいはRegExpに与える文字列をShiftJISバイト列で書くとか
0507デフォルトの名無しさん2007/06/13(水) 20:52:24
>506
やっぱりそれですかね。できれば標準ライブラリのみで完結したかったのですが・・・
とりあえずShift_JIS→UTF-8の変換ライブラリを導入して一応解決したので質問を終えたいと思います。
回答ありがとうございました。
0508デフォルトの名無しさん2007/06/13(水) 23:39:47
import std.windows.charset;
int main(char[][] args){

auto r = new RegExp("(ほげ)+");

auto fp = new BufferedFile("hoge.txt", FileMode.In);

foreach(char[] line; fp){

foreach(char[] s; r.exec(fromMBSz((line~'\0').ptr)))
printf("%s\n", toMBSz(s));

}

return 0;

}
だめ?
0509デフォルトの名無しさん2007/06/14(木) 19:38:54
>494

うちも最初はそうだったけど、「外部ツール」の設定でdmdの起動引数にソースコード名を直接記述してやると
上手くソースコード上でステップ実行できるようになったよ。

あと、うちの環境ではwindow blinds入れていたら、dwtが上手くデバック実行出来なかった。
→wbsys.dllが起動時にACCESS VIOLATIONおこすぽい。
Visual StudioとかはDLLの読込でACCESS VIOLATION発生しても大丈夫なのに・・・
05105052007/06/14(木) 20:55:28
>508
その方法で動作する事を確認しました。ありがとうございました。

ただ、このUTFに一旦変換するやり方では、UTFの変換のオーバーヘッドのためか
プロトタイプ用に書いたスクリプトに速度で負ける有様です。(実際にはログが数十MBほどあります)
C++あたりで書いたほうが幸せになれるのでしょうか。
RegExpにShift_JIS文字列を渡す方法だとより難儀なはまり方をしてしまいそうです。
0511デフォルトの名無しさん2007/06/14(木) 21:48:30
>>510
っBoost
0512デフォルトの名無しさん2007/06/15(金) 01:35:36
>>510
てゆーかphobosのstd.regexpは死ぬほど遅いから
普通にRubyとかPerlの正規表現には速度で負けるとおもう
0513デフォルトの名無しさん2007/06/15(金) 02:36:06
言語仕様って最近落ち着いてるの?
0514デフォルトの名無しさん2007/06/15(金) 02:40:50
ここ一月半は更新がなかったから落ち着いてるよ

目下D2.0の仕様を検討中。
0515デフォルトの名無しさん2007/06/15(金) 04:05:09
それのどこが落ち着いていると言うのかw
0516デフォルトの名無しさん2007/06/15(金) 08:31:17
嵐の前の静けさ
0517デフォルトの名無しさん2007/06/15(金) 11:12:41
dsource.org ddl の meta.regex はどーなん?
0518デフォルトの名無しさん2007/06/15(金) 17:39:27
>>516
まさにそれだな。v1の互換も落とすって言ってるし。
0519デフォルトの名無しさん2007/06/15(金) 17:41:45
正規表現は鬼車を使えばよくね?
0520デフォルトの名無しさん2007/06/15(金) 18:00:53
互換捨てるってマジかよ
過去の自分にさえとらわれないどこまでも前向きな言語
それでこそ僕らのウォルターたん
0521デフォルトの名無しさん2007/06/15(金) 20:53:38
そんな愛しのWalterタンに今年の8月に会えるらしいぞ!
ttp://www.kmonos.net/alang/d/
・・・シアトルか、遠いな。
0522デフォルトの名無しさん2007/06/15(金) 21:16:04
未だに実用に耐えられませんか?
0523デフォルトの名無しさん2007/06/15(金) 21:20:04
言語仕様はすごくイイと思うよ 
コンパイルも早いし、C++の知識があればすんなり入り込めるのもディモールト良い
0524デフォルトの名無しさん2007/06/15(金) 22:03:31
>>522
実用の意味による。
少なくとも仕事で使うわけに行かない場合がある(標準が策定されていないとか)

採用者の責任が取れる範囲で類焼しない小さなプロダクトならいいんじゃないの?
0525デフォルトの名無しさん2007/06/15(金) 22:04:42
実用になるかどうかは、本人の能力次第でしょう。
D言語は初心者向けのの言語ではありません。初心者にはJavaかVBをお勧めします(Walter談)。
05265252007/06/15(金) 22:05:41
ののって・・・>をれ
0527デフォルトの名無しさん2007/06/15(金) 23:46:46
バルス
0528デフォルトの名無しさん2007/06/16(土) 01:06:07
滅びの呪文?
0529デフォルトの名無しさん2007/06/16(土) 01:07:03
>>524
ABAさんのちょっと前のゲームのソースとか、もうコンパイルできなくなってて吹いた
0530デフォルトの名無しさん2007/06/16(土) 11:04:07
D言語でOSとかって作られてるのかね
0531デフォルトの名無しさん2007/06/16(土) 11:21:30
DOS禁止
0532デフォルトの名無しさん2007/06/16(土) 11:59:21
作られてるよ
0533デフォルトの名無しさん2007/06/16(土) 12:04:34
作られてないよ
0534デフォルトの名無しさん2007/06/16(土) 12:58:57
ちなみにGCを完全にオフる事は可能?
0535デフォルトの名無しさん2007/06/16(土) 13:12:57
可能
0536デフォルトの名無しさん2007/06/16(土) 13:52:46
不可能
0537デフォルトの名無しさん2007/06/16(土) 15:34:58
どちらでもない
0538デフォルトの名無しさん2007/06/16(土) 15:42:38
DFLのソースに日本語のリテラルをいれる方法はありますか?
05395382007/06/16(土) 15:48:03
解決しました。文字コードが悪かったようです。
0540デフォルトの名無しさん2007/06/16(土) 16:14:53
GC を完全オフって、要するにメモリリークしまくりってことか。
0541デフォルトの名無しさん2007/06/16(土) 18:08:57
プログラマがdeleteのタイミングを管理するってことでは
0542デフォルトの名無しさん2007/06/16(土) 20:25:11
OSの話でカーネルを作るならって話です。
0543デフォルトの名無しさん2007/06/17(日) 02:32:40
オフにしてまでD言語を使う意味があるの
0544デフォルトの名無しさん2007/06/17(日) 15:57:42
オフにしないとD言語を使えない状況があるって事なだけなんぢゃないの?
0545デフォルトの名無しさん2007/06/17(日) 17:48:00
それは意味不明だ
0546デフォルトの名無しさん2007/06/17(日) 19:24:51
オフにしても使えるような、泥臭い部分も仕様に入ってるというのが俺の理解だけど。
0547デフォルトの名無しさん2007/06/18(月) 00:10:57
GCをオフにすると配列の結合演算~が行えないのでは

0548デフォルトの名無しさん2007/06/18(月) 04:15:15
使わなければいいだけでは?
0549デフォルトの名無しさん2007/06/18(月) 14:55:49
DMD 2.000 リリース
0550デフォルトの名無しさん2007/06/18(月) 14:57:45
New/Changed Features

    * Added aliases string, wstring, and dstring for strings.
    * Added .idup property for arrays to create invariant copies.
    * Added const, invariant, and final.
    * in parameter storage class now means final scope const.
    * foreach value variables now default to final if not declared as inout.
    * class and struct invariant declarations now must have a ().

Bugs Fixed

    * Added missing \n to exception message going to stderr.
    * Fixed default struct initialization for CTFE.
    * Bugzilla 1226: ICE on a struct literal
0551デフォルトの名無しさん2007/06/18(月) 14:59:44
ktkrはいいんだけど、変更範囲多杉なので日本語訳待ち
0552デフォルトの名無しさん2007/06/18(月) 15:09:31
>This is an alpha release to try out the const/final/invariant stuff.
>Treat this as an alpha release. Although it passes its test suite, I'm sure there are plenty of bugs remaining. Phobos also has not been thoroughly gone through to put const/final in all the right places.
0553デフォルトの名無しさん2007/06/18(月) 15:23:42
ついにブランチしたか。
0554デフォルトの名無しさん2007/06/18(月) 18:33:18
ちょw
2.0はやいな
0555デフォルトの名無しさん2007/06/18(月) 18:38:07
バージョン番号の付け方が相変わらず適当すぐるんだがw
0556デフォルトの名無しさん2007/06/18(月) 20:23:07
同じ値の文字列リテラルがなぜか一緒に書き換えられる件について

//dmd2.000
char[] a = cast(char[])"hello";
const char[] b = "hello";
a[0] = 'H';
writefln(a); // Hello
writefln(b); // Hello <- ?
0557デフォルトの名無しさん2007/06/18(月) 20:25:27
っ dup
0558デフォルトの名無しさん2007/06/18(月) 20:35:01
>>556
>a[0] = 'H';
ここでROMを書き換えてるのが原因。Linuxだと落ちるのにWindowsだと落ちないという罠。
0559デフォルトの名無しさん2007/06/18(月) 20:35:25
>>556
> modification after casting away const
> No:

char[] a = cast(char[])"hello";
ここでconst(char)[] から char[] にキャストしてるけど、
これを変更するのは undefined behavior

bの型は const(char)[] じゃなくていいんか?
0560デフォルトの名無しさん2007/06/18(月) 20:37:10
>>556
http://www.digitalmars.com/d/final-const-invariant.html
Removing Invariant With A Cast のとこ読みナ
0561デフォルトの名無しさん2007/06/18(月) 20:39:26
>>558
Linuxだと落ちるのか 
いままで、何で書き換え禁止のはずのリテラルを普通に書きかえれるんだよ!
とか思ってたけど
05625562007/06/18(月) 20:45:14
thx
ずいぶんたくさんのレスついたな
final invariant const を勉強中なんだが なるほど
ROMを書き換えるような処理は基本的に不正ってわけか
0563デフォルトの名無しさん2007/06/18(月) 21:11:19
何という不意打ち。

どう考えてもstringとか中途半端にしか使われなさそうだ。
structはコンストラクタ書けるようになったのか……?
0564デフォルトの名無しさん2007/06/18(月) 21:16:10
ってか、typeid()でconst/invariantでないじゃん。
0565デフォルトの名無しさん2007/06/18(月) 21:18:24
いや、出るけど括弧がないのか。
0566デフォルトの名無しさん2007/06/18(月) 21:20:12
writefln(typeid(typeof("str")));

char[3] になるけどいいのかな?
0567デフォルトの名無しさん2007/06/18(月) 21:21:57
>>563
structのコンストラクタはない。
0568デフォルトの名無しさん2007/06/18(月) 21:43:47
const char[] と const(char)[] は別物っぽいから string が const(char)[] の alias になっているのは
const(char)[] b = "hoge"; // string b = "hoge";
の形を一番よく使うからってことかな

あとは
invariant(char)[] a = "hoge";
char[] c = "hoge".dup;
のどちらかになるのかー
0569デフォルトの名無しさん2007/06/18(月) 21:59:02
const char[] と const(char[]) は別物??
よう分からん。
0570デフォルトの名無しさん2007/06/18(月) 22:13:45
>>569
確か同じ。
0571デフォルトの名無しさん2007/06/18(月) 22:26:00
void main() {
const(int[]) a = [1];
const int[] b = [1];
const(int)[] c = [1];
a = [2]; // OK
b = [2]; // Error
c = [2]; // OK
a[0] = 2; // Error
b[0] = 2; // Error
c[0] = 2; // Error
a.length = 2; // OK
b.length = 2; // Error
c.length = 2; // OK
}

* aは(変更不可能な配列型)の変数。
* bは変更不可能な(配列型の変数)。
* cは(要素を変更不可能な配列型)の変数。

って理解でいいのかな
0572デフォルトの名無しさん2007/06/18(月) 22:30:22
(1)と(2)の理解はこれで正しいのでしょうか

char[] a = "hello".dup;
string b = a; // ok, char[] から const(char)[] へは暗黙変換される?(1)
b = "HELLO"; // ok
writefln(a); // hello, 変化してないから (1) で deep copy されてる?(2)
writefln(b); // HELLO
0573デフォルトの名無しさん2007/06/18(月) 22:32:18
>>571
それであってんじゃね?
うーん 難しいな
こんなにポインタ操作を意識するのは久しぶりだ
0574デフォルトの名無しさん2007/06/18(月) 23:13:14
>>572
(1)はたぶんあってる。
> Implicit Conversions
> Mutable and invariant types can be implicitly converted to const.

(2)は違うと思う。
b = "HELLO"; は参照が取り替えられてるだけ。
0575デフォルトの名無しさん2007/06/18(月) 23:20:12
>>574
え・・・ほんとだ・・・(2)
言われて見直したらそれだけのことだった orz
正直すまんかった
0576デフォルトの名無しさん2007/06/18(月) 23:34:20
誰か1.0と2.0の違いをkwsk
1.0の系統は残るの?
0577デフォルトの名無しさん2007/06/18(月) 23:36:45
もはやv1がウォルタたんの探究心を満たすことはできないだろ。
0578デフォルトの名無しさん2007/06/19(火) 00:07:03
しかし正月に1.0が出てから半年で2.0か。

来年の正月には3.0になってる??
0579デフォルトの名無しさん2007/06/19(火) 00:16:12
その次に 4.0 が出て、その次は何故か 0.5.0 になったり。
0580デフォルトの名無しさん2007/06/19(火) 00:20:52
void main(const(const(const(char)[])[])args){
        foreach(const const(char)[]arg;args)
                printf("%.*s\n",arg);
}
何が何だかよくわからん
0581デフォルトの名無しさん2007/06/19(火) 00:28:29
これはalias使わないのは悪の流れかな?
0582デフォルトの名無しさん2007/06/19(火) 00:37:44
>>580
printfにchar[]を渡すときはtoStringzいるんじゃなかったけか
0583デフォルトの名無しさん2007/06/19(火) 00:41:56
%.*sはchar*
0584デフォルトの名無しさん2007/06/19(火) 00:45:07
しまった、%.*sはchar[]だ。
0585デフォルトの名無しさん2007/06/19(火) 00:54:14
>>580
int main(in char[][] args)
これじゃだめなの?
0586デフォルトの名無しさん2007/06/19(火) 01:17:50
main(in string[] args) でいいだろ。
0587デフォルトの名無しさん2007/06/19(火) 01:19:35
とりあえず 2.0 系にして色々やってみて、
やばかったらまた 1.0 系に戻すつもりだったりして。
0588デフォルトの名無しさん2007/06/19(火) 07:18:07
>>293
これで、いちいちaliasしなくても良くなったな。
0589デフォルトの名無しさん2007/06/19(火) 08:29:19
while文とかfor文とかの中でないといけないもので最初(または最後)にだけ実行される機能っての結構あるよね
そこをこうfirst文とかで自動でやってくれたら楽じゃね
いや自分で最初かどうかのbool値とかループカウンタ用意するのもいいけどさ・・・
どうにかなりそうな面倒さだったんでついwww
0590デフォルトの名無しさん2007/06/19(火) 08:48:27
最初は for の最初のとこでいいと思うけど、
最後は俺も欲しい。
前に話題に出た事あったような気はするんだけど、
結局うやむやに終わったんだっけか?
0591デフォルトの名無しさん2007/06/19(火) 08:49:09
あるいは for の前だな >最初の
0592デフォルトの名無しさん2007/06/19(火) 14:33:49
>>468 のロードマップはなんだったんだろうなw
0593デフォルトの名無しさん2007/06/19(火) 14:53:41
forとかwhileの外に書くと関連性があるのやらないのやらでたまに困る
0594デフォルトの名無しさん2007/06/19(火) 15:00:56
そういうときは
{/*処理の説明*/
 処理本編
}
というように括る。
0595デフォルトの名無しさん2007/06/19(火) 17:18:08
while .. finally
for .. finally
とか?

perl には while .. continue 構文があったな。
0596デフォルトの名無しさん2007/06/19(火) 18:21:22
invariant表明に括弧いるようになったんかいな・・・
きたねえのう
0597デフォルトの名無しさん2007/06/19(火) 19:11:47
{}

ブロック機能を使え
0598デフォルトの名無しさん2007/06/19(火) 19:20:47
>>596
さすがに醜い気がするな
0599デフォルトの名無しさん2007/06/19(火) 21:47:23
>595
Pythonにもwhile-elseとfor-elseがあるな。
0600デフォルトの名無しさん2007/06/20(水) 07:46:58
というかD2.0はalias stringがあるだけで使う価値があると思う
0601デフォルトの名無しさん2007/06/20(水) 13:51:26
>>600
1.016にもあるよ
0602デフォルトの名無しさん2007/06/21(木) 02:22:13
こうなると1.016と2.000のどっちを使うか迷うなあ
当然2.000を使いたいのだがライブラリ全滅だし
0603デフォルトの名無しさん2007/06/21(木) 16:18:15
え 2.0って既存のライブラリ使えないの?!
0604デフォルトの名無しさん2007/06/21(木) 16:21:41
>>603
phobosは使えるけど、それ以外のユーザーが作成したやつは全滅かも。
0605デフォルトの名無しさん2007/06/21(木) 17:03:23
今までもライブラリが使えなくなることはよくあったんだから
問題は1.x/2.x両方に対応することができるのかってことだよね
1.xが中途半端に生き残ってる限りライブラリ開発が進めにくいのが痛い
0606デフォルトの名無しさん2007/06/21(木) 17:07:08
>>605
>>596とかどうやって切り替えればいいんだろうな。
Cみたいなテキストマクロが使えればv2なら括弧だけ補うなんてこともできるんだが。
0607デフォルトの名無しさん2007/06/21(木) 17:09:19
そういう部分もカンファレンスで議論するために2.0リリースを早めたのかな
2.0系って下位互換をそれほど犠牲にしてまで使いやすい仕様になってるの?
仕様書が見あたらなくてよくわからない・・・
0608デフォルトの名無しさん2007/06/21(木) 17:12:18
あんまり変わってない気がするなあ・・・
アルファだし叩き台の意味もあるんだろうが、
どうせ互換性切るなら構造体リテラルとか連想配列リテラルとかも考え直して欲しい。
0609デフォルトの名無しさん2007/06/21(木) 17:27:00
たしかに・・・
動的配列も・・・・
0610デフォルトの名無しさん2007/06/21(木) 19:31:07
カンファレンスにはぜひマルチバイト文字列圏の人間にも参加して欲しい
0611デフォルトの名無しさん2007/06/21(木) 22:24:45
そのうちアスペクト指向とか取り入れられたりすることを期待

>>610
FAQに「Why not in Europe?」とかあるものなw
0612デフォルトの名無しさん2007/06/21(木) 23:43:57
>>611
FAQからして日本は眼中にない罠w
つーか おいおい
よく見たらMC++DのAndrei Alexandrescuも発表者として参加するのか
0613デフォルトの名無しさん2007/06/22(金) 01:10:40
2.0のリリースっていつなんだろ。
出たら何か作ろ!
0614デフォルトの名無しさん2007/06/22(金) 02:35:44
>>613
>>549

もっと仕様が定着したら、みたいな意味か?
0615デフォルトの名無しさん2007/06/22(金) 02:39:07
まだΑ版だろ
0616デフォルトの名無しさん2007/06/22(金) 10:47:55
あぼーん版だな
0617デフォルトの名無しさん2007/06/22(金) 20:11:25
constメンバ関数増えてるのか
0618デフォルトの名無しさん2007/06/22(金) 20:13:15
invariantメンバ関数まであるみたいだな。
0619デフォルトの名無しさん2007/06/22(金) 22:12:36
うお  ver.1.017がいつのまにかリリースされている・・・
0620デフォルトの名無しさん2007/06/22(金) 22:40:42
D 1.017

New/Changed Features
 Added __VENDOR__ and __VERSION__.
Bugs Fixed
 std.compiler now is automatically updated.
0621デフォルトの名無しさん2007/06/22(金) 22:57:36
dmd.zip の方か・・・。
0622デフォルトの名無しさん2007/06/22(金) 23:03:38
alias char[] string;
string s = new string(80);
s[] = 'a';
とか、してたトコは逆に、charにしないといけないのか?>2.0
0623デフォルトの名無しさん2007/06/22(金) 23:16:14
string hoge() { return "hoge"; }
writefln(std.string.join([cast(string)"hoge", hoge(), hoge()], ","));
writefln(std.string.join(["hoge", hoge().idup, hoge().idup], ","));
なんか、びみょー。
0624デフォルトの名無しさん2007/06/23(土) 01:28:50
>>620
これってstd.compilerが自動的にアップデートをチェックしてくれるってこと?
0625デフォルトの名無しさん2007/06/23(土) 01:48:11
>>624
dmdをアップデートさせたらstd.compilerの内容もアップされるということか
0626デフォルトの名無しさん2007/06/23(土) 09:43:37
コンパイラに関する情報をphobosからなくしたってことか
0627デフォルトの名無しさん2007/06/23(土) 16:40:00
>>620-621
消えてます?
0628デフォルトの名無しさん2007/06/23(土) 16:51:53
>>627
消えたね。

Walterタン曰く
>It's not done yet!
0629デフォルトの名無しさん2007/06/23(土) 17:45:25
おういえ、さんくすです
0630デフォルトの名無しさん2007/06/23(土) 18:23:07
なんか最近 開発陣も混乱してる感があるなw
0631デフォルトの名無しさん2007/06/23(土) 20:20:36
陣っていうほどいるの?
をるちゃんだけでやってると思ってた
0632デフォルトの名無しさん2007/06/24(日) 03:12:25
最終的にはWalterタンの鶴の一声で決まってる感があるけどw
議論はニュースグループとかでみんなでしてるし
コンパイラもオープンソースだろ
みんな開発に参加しる!
0633デフォルトの名無しさん2007/06/24(日) 03:39:28
純正コンパイラはプロプライエタリじゃねえの?
0634デフォルトの名無しさん2007/06/24(日) 12:18:01
やっぱgdcじゃだめ?w
純正も完全なオープンソースにならねぇかな
0635デフォルトの名無しさん2007/06/24(日) 12:51:08
俺、プロプライエタリって言えないんだよなあ。
客先とかで絶対に噛む。
0636デフォルトの名無しさん2007/06/24(日) 13:02:10
クローズドでいいじゃんねぇ?w
0637デフォルトの名無しさん2007/06/24(日) 15:00:27
>>635
まず「プロプラ」って言ってみ。それが言えたら、その嬉しさのままに「言えたり!」って
叫んだら良いよ。これで君も「プロプラ言えたり!」。
0638デフォルトの名無しさん2007/06/24(日) 16:51:34
プロペラになった
0639デフォルトの名無しさん2007/06/24(日) 18:17:01
2.0 対応の htod ほすぃ・・・
0640デフォルトの名無しさん2007/06/24(日) 18:50:25
mixin(include!("hoge.h"));
0641デフォルトの名無しさん2007/06/24(日) 20:00:33
そのincludeはまじであるのかい?
0642デフォルトの名無しさん2007/06/24(日) 20:12:04
ねえよ。
0643デフォルトの名無しさん2007/06/24(日) 21:36:38
>俺、プロプライエタリって言えないんだよなあ。
>客先とかで絶対に噛む。

>このスレを見ている人はこんなスレも見ています。(ver 0.20)
>発音を良くするスレ2 [ENGLISH]
0644デフォルトの名無しさん2007/06/24(日) 22:59:12
warosu
0645デフォルトの名無しさん2007/06/25(月) 03:15:28
マングリングって言葉の響き、エロいよな
0646デフォルトの名無しさん2007/06/25(月) 11:08:35
tangoは2.0様子見っすか
0647デフォルトの名無しさん2007/06/25(月) 12:07:37
なんつーかWalterタン
ライブラリとかまわりと協調する気
ゼロの気がするんだが気のせいか
0648デフォルトの名無しさん2007/06/25(月) 12:15:48
そらそうだろ。
そこら辺を意識して負の遺産が山積みの言語にするのは
Walterタンが D に求めているものではないだろう。
0649デフォルトの名無しさん2007/06/25(月) 12:23:17
そして正の遺産も積まれないわけですね
0650デフォルトの名無しさん2007/06/25(月) 12:23:46
賽の河原だな
0651デフォルトの名無しさん2007/06/25(月) 12:24:59
「完成」 すれば、そこからいくらでも正の遺産は積めるだろう。
それまでは実用できないってのは、今までで証明されている。
0652デフォルトの名無しさん2007/06/25(月) 12:25:45
まあ問題は、いつ 「完成」 するのかだな・・・。
0653デフォルトの名無しさん2007/06/25(月) 12:44:05
せめて「完成」してから1.0を名乗って欲しかったのは俺だけではあるまい
もうなにがなんだかよくわからナス
どうせ「完成宣言」も永遠にしないんだろ
0654デフォルトの名無しさん2007/06/25(月) 13:34:57
最後の一行は厨臭い願望だな。
0655デフォルトの名無しさん2007/06/25(月) 14:25:25
D言語に完成なんて求めてどうするんだ?
こいつは永遠の実験言語だってば
0656デフォルトの名無しさん2007/06/25(月) 14:29:58
その恐れはあるが、完成しないともったいないとは思う。
0657デフォルトの名無しさん2007/06/25(月) 14:33:15
Walterタンが生きている限り変わり続ける希ガス
しかし砂上の楼閣じゃ使い物にならない罠
なんかタチの悪い社会主義みたいだw

さすがに8年経とうとしてるし
Dが世の中に受け容れられるかどうかはこのへんが正念場だと思う
カンファレンスで今後のビジョンも示されるらしいから期待して待つよ
0658デフォルトの名無しさん2007/06/25(月) 15:24:05
リリース版とRC、BETAを分ければいいのに。
0659デフォルトの名無しさん2007/06/25(月) 16:37:09
名前を分けたって物凄い勢いで変わることに違いはあるまい。
0660デフォルトの名無しさん2007/06/25(月) 17:21:02
この流れ……
飛鳥配列を思い出す
0661デフォルトの名無しさん2007/06/25(月) 17:32:09
>>657
永久革命ってやつだね
政治でやられると確かにメチャメチャタチ悪いw

でもプログラム言語だけのことならこんなのも世の中に一つぐらいはあってよさそうな気もしてきたw
0662デフォルトの名無しさん2007/06/25(月) 18:30:09
>>658
今の段階だと分けるにしても使用者層が少なすぎるし
リリース版だからといって人に勧められるほど安定化してるわけでもないと思う
2.x系がベータという位置づけなのかもしれないけど

>>661
ユーザーとしては困るw

カンファレンスがシアトルで開催ってのは企業等へのアピールという
思惑もあるだろうからサポート企業が出てきてくれることに期待
個人的にはWolframタンとかも呼んでホスィw
0663デフォルトの名無しさん2007/06/25(月) 18:43:46
1.xでさえ人柱専用なのに2.xはさらに仕様検討用だからなw
2.xで何か作ることを考えるのは早すぎる
やるなら1.xにしなされ
0664デフォルトの名無しさん2007/06/26(火) 16:30:54
ところで・・・
Digital Mars社のTシャツにマックスウェル方程式柄があるんだが
ありゃDigital Marsとなんか関係あるのか?w
0665デフォルトの名無しさん2007/06/26(火) 18:05:30
>664
>マクスウェル方程式柄
ttp://www.t-shirtshopper.com/cgi-bin/show_item.cgi?site=two_barking_dogs&url=http://www.twobarkingdogs.com/images/Zoom/tbd_6F.jpg

↑を思い出した
0666デフォルトの名無しさん2007/06/26(火) 19:37:14
何かシンボル的なものなのかね
そういえば、物理屋に言わせればマクスウェル方程式ってスゲー美しいらしいが
アインシュタインも理想としたと聞く
0667デフォルトの名無しさん2007/06/26(火) 19:48:22
ウォルたんの趣味?
0668デフォルトの名無しさん2007/06/26(火) 19:52:05
マクスウェル方程式の真の美しさは
四元ベクトル形式じゃないと分かんないよ。
0669デフォルトの名無しさん2007/06/26(火) 20:02:04
>>664
たんにクールだろってことだと思うけどなw

>>668
「四元ベクトル形式」っていう言葉ははじめて聞いた気がするけど
テンソル形式のことだよね?

特殊相対論までならそれでもいいんでない?
と思いはするけどたしかに共変形で書いて欲しかった気もするw
0670デフォルトの名無しさん2007/06/27(水) 10:44:20
class A {
A *getthis() {
return( &this );
}
};

int main()
{
auto a= new A();
printf( "%p %p", a.getthis(), &a);
}



thisのアドレスとインスタンスのアドレスが違うのは、なんでだろう
クラス内でインスタンスのアドレスはとれないもんかな
0671デフォルトの名無しさん2007/06/27(水) 10:54:01
違って当たり前だろう・・・。
0672デフォルトの名無しさん2007/06/27(水) 11:01:30
D 1.017
0673デフォルトの名無しさん2007/06/27(水) 11:07:40
>>671
違う理由はなんとなくわかったんですが、
インスタンスのアドレスとれないでしょうか

そのアドレスもGCでかわる可能性があるんでしょうか
0674デフォルトの名無しさん2007/06/27(水) 11:10:40
インスタンスのアドレスとって、それを何に使いたいの?
使い道がよく分からないんだけど。
0675デフォルトの名無しさん2007/06/27(水) 11:27:46
>>670
class A{
  void *getthis(){
    return cast(void*)this;
  }
}

void main(){
  auto a= new A();
  printf( "%p %p", a.getthis(), cast(void*)a);
}
0676デフォルトの名無しさん2007/06/27(水) 11:51:58
>>675
あ、なるほど・・ありがとうございます
0677デフォルトの名無しさん2007/06/27(水) 19:11:21
1.017の.initの変更ってどういうこと?
0678デフォルトの名無しさん2007/06/27(水) 21:09:08
> The .init property for a variable is now based on its type, not its initializer.
変数を使った .init プロパティは、
その初期化に使った値ではなく、
その型に対して使った場合と同じ値
(変数を初期化しなかった場合に入れられる値)になりました。
0679デフォルトの名無しさん2007/06/27(水) 21:13:48
うわぁきっつぅ・・・
かなり書き直しいるなあ
0680デフォルトの名無しさん2007/06/27(水) 21:23:50
1.x系でもこれかwww
なんだってまた今更こんな変更が・・・w

ちなみになんかホームページすごい見にくい気がする
コンパイラ履歴のolder versionsからのリンク先が
1.0までで終わっているのはなんで?
0681デフォルトの名無しさん2007/06/27(水) 21:28:55
一応誤訳じゃないか実行して確かめてけれ。
俺は Mac だから�_。
06826772007/06/27(水) 21:29:55
やっぱりそういうことか(;´Д⊂)
自分を信じたくなかた・・・テラヒドス

>>680
1.0系と2.0系で別のページになっている
上のほうに切り替え用のリンクがあったはず
1.0系のchange logにはもっと古いバージョンのも書いてあるよ
0683デフォルトの名無しさん2007/06/27(水) 21:31:29
俺は元々変な仕様だなあと思ってたから
この変更には納得できる。
0684デフォルトの名無しさん2007/06/27(水) 21:39:55
>>682
漏れも信じたくなかったw

んで別のページになっているのはわかるんだけど
例えば2.0系のコンパイラのページで
上のolder versionsの最新がD 1.00で止まってるのは
なんか使いにくいなと思ったもので・・・
この場合だと1.00以降のログが表示されないとまずくない?

>>683
そっか 漏れはゲームつくるときに初期値化すぐできて便利だなー
とか思っていたんだが・・・orz
0685デフォルトの名無しさん2007/06/27(水) 21:46:17
ちょっと処理の巻き戻しするときとか便利だったんだが、奇妙な機能ではあったから仕方ないな。
0686デフォルトの名無しさん2007/06/28(木) 06:29:26
型の初期値なんてメリットあんの?
0687デフォルトの名無しさん2007/06/28(木) 06:37:53
typedef int myint = 7;
とかやってる型の初期値とるときは有用なんじゃね
0688デフォルトの名無しさん2007/06/28(木) 07:20:23
そうかtypedefすればいいのか
0689デフォルトの名無しさん2007/06/28(木) 07:55:24
>>687
それ知らんかったわ。
さすがウォルターたんだ
0690デフォルトの名無しさん2007/06/28(木) 08:46:26
そんなことができたのかw
すげーや。
0691デフォルトの名無しさん2007/06/28(木) 10:22:11
DMD 2.001 リリース
0692デフォルトの名無しさん2007/06/28(木) 10:46:24
New/Changed Features
    * Added D_Version2 predefined identifier to indicate this is a D version 2.0 compiler
    * Added __VENDOR__ and __VERSION__.
    * Now an error to use both const and invariant as storage classes for the same declaration
    * The .init property for a variable is now based on its type, not its initializer.
0693デフォルトの名無しさん2007/06/28(木) 10:47:47
Bugs Fixed
    * std.compiler now is automatically updated.
    * Fixed problem catting mutable to invariant arrays.
    * Fixed CFTE bug with e++ and e--.
    * Bugzilla 1254: Using a parameter initialized to void in a compile-time evaluated function doesn't work
    * Bugzilla 1256: "with" statement with symbol
    * Bugzilla 1259: Inline build triggers an illegal error msg "Error: S() is not an lvalue"
    * Bugzilla 1260: Another tuple bug
    * Bugzilla 1261: Regression from overzealous error message
    * Bugzilla 1262: Local variable of struct type initialized by literal resets when compared to .init
    * Bugzilla 1263: Template function overload fails when overloading on both template and non-template class
    * Bugzilla 1268: Struct literals try to initialize static arrays of non-static structs incorrectly
    * Bugzilla 1269: Compiler crash on assigning to an element of a void-initialized array in CTFE
    * Bugzilla 1270: -inline produces an ICE
    * Bugzilla 1272: problems with the new 1.0 section
    * Bugzilla 1274: 2.0 beta link points to dmd.zip which is the 1.x chain
    * Bugzilla 1275: ambiguity with 'in' meaning
    * Bugzilla 1276: static assert message displayed with escaped characters
    * Bugzilla 1277: "in final const scope" not considered redundant storage classes
    * Bugzilla 1279: const/invariant functions don't accept const/invariant return types
    * Bugzilla 1280: std.socket.Socket.send (void[],SocketFlags) should take a const(void)[] instead
    * Bugzilla 1283: writefln: formatter applies to following variable
    * Bugzilla 1286: crash on invariant struct member function referencing globals
0694デフォルトの名無しさん2007/06/28(木) 11:52:49
{
int a = 10;
a = 20;
printf("%d %d %d",a, a.init, int.init); // 20 0 0
}
なんで a.init == ini.init に変えちゃったんだろう
0695デフォルトの名無しさん2007/06/28(木) 12:06:38
http://www.wikiroom.com/sakurai/index.php?DJcode#q4a42aff
DJcodeを2.001に対応させときましたノシ
0696デフォルトの名無しさん2007/06/28(木) 13:40:40
>>695
お世話になったことは無い身ですが、
メソッド名はDのスタイルガイドに従ってlowerCamelにしませんか。
0697デフォルトの名無しさん2007/06/28(木) 14:00:08
うほ スタイルガイドだと定数名はすべて大文字なのか
なんで先頭文字だけ大文字にしないのかしら?
先頭ですよってわかりやすいから?
0698デフォルトの名無しさん2007/06/28(木) 14:17:54
C のマクロ時代からの名残なんじゃないかな。
0699デフォルトの名無しさん2007/06/28(木) 14:57:45
Javaもそうだしな。趨勢に合わせてくれる事はいいよ。
0700デフォルトの名無しさん2007/06/28(木) 18:53:22
utf8_euc()とかはlowerCamelじゃなくていいよね?
695じゃないけど気になった。
0701デフォルトの名無しさん2007/06/28(木) 19:07:40
lowerCamelにするならutf8Encだな。
0702デフォルトの名無しさん2007/06/28(木) 19:10:38
メソッド呼び出しを英語として読み下したとき、
主語->動詞の動詞が大文字になっちゃって違和感があるんじゃなかろーか。
0703デフォルトの名無しさん2007/06/28(木) 19:11:58
encodeToUtf8
0704デフォルトの名無しさん2007/06/28(木) 19:12:45
utf82eucだろ
0705デフォルトの名無しさん2007/06/28(木) 19:12:50
普通は主語がオブジェクトになるんじゃないかな。
0706デフォルトの名無しさん2007/06/28(木) 19:13:42
UTF-82 って凄いですね><
0707デフォルトの名無しさん2007/06/28(木) 19:14:32
いや、オブジェクトは目的語になることもあるか。
0708デフォルトの名無しさん2007/06/28(木) 19:14:58
typedef ubyte[] EucString;
EucString toEuc(char[] utf8_string);

とかが綺麗そうだけどな。
0709デフォルトの名無しさん2007/06/28(木) 19:23:34
>>708
char[] toUtf8(EucString euc_string);
を用意しても、EucString型オブジェクトのプロパティっぽくは使えないんだな…
0710デフォルトの名無しさん2007/06/28(木) 19:32:03
オブジェクトのメソッド名は動詞で始めるべしと言うけれど、関数の場合どーしたもんだろうね。

Dの場合 method(Type[] arg) が arg.method() とも書ける仕様があるけど、
動詞で始めた場合、結局 arg.method() と書かないと不自然になっちゃうのね。
0711デフォルトの名無しさん2007/06/28(木) 19:33:14
charをUTF-8でない文字に使うのは誤り?
0712デフォルトの名無しさん2007/06/28(木) 19:34:08
前置詞で終わるようにするとか。
0713デフォルトの名無しさん2007/06/28(木) 19:46:08
indexOf()とかinsertAt()とか?
俺は、それっぽければいいと思ってるので、英語の文法にはあまりこだわらないな。
0714デフォルトの名無しさん2007/06/28(木) 19:49:18
エスペラント語にすれば順序気にしなくて済むよ
0715デフォルトの名無しさん2007/06/28(木) 20:27:32
いちいち変数を格変化させるわけですね。
0716デフォルトの名無しさん2007/06/28(木) 21:23:41
三角関数とかベータ関数とか正規分布関数とか動詞にはできないなあ。
culcSin(double)
0717デフォルトの名無しさん2007/06/28(木) 21:28:43
calc
0718デフォルトの名無しさん2007/06/28(木) 21:31:16
クルックー
0719デフォルトの名無しさん2007/06/28(木) 21:33:18
>>715
Jes. 下四つとも一緒になるし。

int hogeo, fugeo;
c^uHavas(hogeo, fugeon);
c^uHavas(fugeon, hogeo);
hogeo.c^uHavas(fugeon);
fugeon.c^uHavas(hogeo);
0720デフォルトの名無しさん2007/06/28(木) 21:35:51
alias作るテンプレートがほしいなw
0721デフォルトの名無しさん2007/06/28(木) 21:36:31
>>719
キモいw
0722デフォルトの名無しさん2007/06/28(木) 21:48:34
スペルミスorz
0723デフォルトの名無しさん2007/06/28(木) 22:04:08
予約語以外は日本語も通るから日本語でやってみようぜ。
予約語もaliasすれば大丈夫。

alias real 実数;
実数 正弦(実数 角度);
0724デフォルトの名無しさん2007/06/28(木) 22:04:28
というか、Dは日本語も使えるんだから、
alias char[] 文字列

文字列 フルパスからファイル名だけを取得する(文字列 フルパス)
でいいじゃん。
0725デフォルトの名無しさん2007/06/28(木) 22:11:02
クラスの場合なら、

class 固定小数点数 { ... }


文字列 = 小数.を文字列に変換();
小数.の整数部 = 整数;

とか。
0726デフォルトの名無しさん2007/06/28(木) 22:13:02
なでしこ顔負けだな。
0727デフォルトの名無しさん2007/06/28(木) 22:31:55
演算子とかが反って打ち込みにくいような気がする。
0728デフォルトの名無しさん2007/06/28(木) 23:03:46
たのしそうだwwwww
なんかネタでそういうの組んで見たくなったwwwww
0729デフォルトの名無しさん2007/06/28(木) 23:08:48
このワクワク感は前スレの演算子オーバーロード以来だな。
0730デフォルトの名無しさん2007/06/28(木) 23:14:05
>>729
組み合わせろ把握
0731デフォルトの名無しさん2007/06/29(金) 00:02:23
>>727-730
wwww
伏線上手すぎるだろ。
なんだこの少年漫画ばりの盛り上げ方は。
0732デフォルトの名無しさん2007/06/29(金) 00:56:46
ifelse.d:1: invalid UTF-8 sequence
ifelse.d:1: invalid UTF-8 sequence
ifelse.d:1: unsupported char 0x81

とかボロボロエラーが出るんだけど、俺だけ?
0733デフォルトの名無しさん2007/06/29(金) 01:01:49
ソースコードの文字コードをUTF-8に直す作業に戻るんだ
0734デフォルトの名無しさん2007/06/29(金) 01:05:57
いや、UTF-8 なんだけど。
環境は MacOSX GDC 0.23 (D 1.007)

例えば 「もし」 とか定義しようとするとあかん。
0735デフォルトの名無しさん2007/06/29(金) 01:09:11
Macじゃしかたないのでは
0736デフォルトの名無しさん2007/06/29(金) 01:11:36
Mac とか関係あるのか?
0737デフォルトの名無しさん2007/06/29(金) 01:27:56
もうわけ分からん。
ttp://ranobe.com/up/src/up197596.zip
0738デフォルトの名無しさん2007/06/29(金) 01:37:37
>>734
http://www.kmonos.net/alang/d/lex.html
> ソースファイルが BOM で始まらない場合は、
> 最初の2文字は必ず U0000007F 以下でなければなりません。
にひっかかってるとか?
0739デフォルトの名無しさん2007/06/29(金) 01:39:56
最初の2文字は ASCII 文字だなあ。
とりあえずソースは >>737 にある。
Windows だと大丈夫なのかな?
0740デフォルトの名無しさん2007/06/29(金) 01:49:00
738だけどWindowsでもだめだったよ
1.014
0741デフォルトの名無しさん2007/06/29(金) 01:50:34
そうか・・・。じゃ、本格的なバグか?
0742デフォルトの名無しさん2007/06/29(金) 01:51:25
ifelse.dの[、]、io.dの[「][」]を削除したらコンパイルできるようになったよ
@Win2k, dmd1.015
0743デフォルトの名無しさん2007/06/29(金) 01:53:46
お、そいつらは「普遍基本文字」とやらに含まれないのかな?
まあ、Mac だとそれ以外でもエラーになるけど。
0744デフォルトの名無しさん2007/06/29(金) 01:56:52
というわけで、演算子オーバーロードを使って
条件文を日本語っぽく書けるようにするテスト。
ttp://ranobe.com/up/src/up197598.zip
0745デフォルトの名無しさん2007/06/29(金) 07:10:41
>>744
うっはwwなでしこwww
0746デフォルトの名無しさん2007/06/29(金) 10:01:00
DMD1.014 + Codeblocks @ Vistaで試してみたんだが、
メジャーな言語はだいたい通る。
西欧語(ローマ字、キリル文字、ギリシャ文字)は特に問題なし。
日本語や中国語は約物が通らない。
アラビア語は母音記号やシャッダ、スクーンが入るとNG。
Vistaだと自動的に右から左に書く書式に直されるので、使いづらい。
インド諸語や記号類はだめだったなあ。
シグマはいけたが、ルートはだめ。

個人的にはギリシャ文字が通るのは結構有難いな。
0747デフォルトの名無しさん2007/06/29(金) 10:58:09
要するに、基本的に記号類はアウトってことか。
0748デフォルトの名無しさん2007/06/29(金) 11:21:26
コンパイラ的にアウトにしないとなんか不都合でもあるのかしら?
0749デフォルトの名無しさん2007/06/29(金) 11:23:42
全角の演算子が識別子に使えたら不都合ではあるだろうね。
0750デフォルトの名無しさん2007/06/29(金) 17:20:19
Dで使用可能な普遍基本文字(独自定義の模様)
ttp://www.algonet.se/~afb/d/universalalphas/

ttp://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.learn&artnum=3458
↑の回答から誘導された
0751デフォルトの名無しさん2007/06/29(金) 17:24:24
>>750
ISO/IEC 9899:1999 (E)って書いてある訳だが?
0752デフォルトの名無しさん2007/06/29(金) 17:27:38
あ。確かに。
すんませんした
0753デフォルトの名無しさん2007/06/29(金) 22:39:20
better C が欲しかった俺にとって D は結構良い選択肢なんじゃないかと思えて来た。
C のライブラリがそのまま使えて、C++ よりコンパイル速度が速いらしいというのは良いね。
0754デフォルトの名無しさん2007/06/29(金) 22:41:34
ああ、なんかDigitalMarsのCライブラリにバグがあるような気がしてきた
0755デフォルトの名無しさん2007/06/30(土) 02:23:20
え でもあれってポーティングしただけじゃないの?
0756デフォルトの名無しさん2007/06/30(土) 08:53:08
やっぱDが一番使いやすい言語だな。
0757デフォルトの名無しさん2007/06/30(土) 09:09:21
そういやopIndexで多次元配列的なことはできるの?
0758デフォルトの名無しさん2007/06/30(土) 09:43:55
>>757
> i = a[5,6,7]; // i = a.opIndex(5,6,7); と同じ
> a[i,3] = 7; // a.opIndexAssign(7,i,3); と同じ
とか
0759デフォルトの名無しさん2007/06/30(土) 11:22:44
まじDつかいやすいな
0760デフォルトの名無しさん2007/06/30(土) 20:19:11
delegate は一度使うと癖になるな
0761デフォルトの名無しさん2007/06/30(土) 21:17:34
delegateはC#のパクリ
0762デフォルトの名無しさん2007/06/30(土) 21:29:46
ただのクロージャオブジェクトだろ。
0763デフォルトの名無しさん2007/06/30(土) 21:30:06
そもそもDにオリジナルの新機能ってなんかあるの?
0764デフォルトの名無しさん2007/06/30(土) 21:37:50
ないよ。
0765デフォルトの名無しさん2007/06/30(土) 21:53:24
C++0xの案も含めた様々な言語の良いとこ取りに過ぎない。
0766デフォルトの名無しさん2007/06/30(土) 21:55:42
"\&copy;" こういうの採用したプログラミング言語って先例あるか?
0767デフォルトの名無しさん2007/06/30(土) 22:27:17
珍しいが新機能ってほどでもないなw
0768デフォルトの名無しさん2007/06/30(土) 22:27:53
良いトコ取りを良い感じにまとめてくれた言語が 5 年毎に作られたら嬉しいな
0769デフォルトの名無しさん2007/07/01(日) 01:26:23
10年ごとでいい
0770デフォルトの名無しさん2007/07/01(日) 01:28:31
1つあれば十分。
0771デフォルトの名無しさん2007/07/01(日) 03:45:29
いいや4つくれ
0772デフォルトの名無しさん2007/07/01(日) 03:55:55
2つでじゅうぶんですよ
0773デフォルトの名無しさん2007/07/01(日) 05:31:54
ちなみにコードの可読性ってJavaより低い気がするんだけど漏れだけ?
0774デフォルトの名無しさん2007/07/01(日) 07:39:32
慣れの問題
どちらもC系で微妙に似ているから逆に違和感がある
0775デフォルトの名無しさん2007/07/01(日) 07:43:54
あ、↑の二行目はあくまでオレの場合だから、他に理由が無いとも限らんが
まあ、標準ライブラリの恩恵とかはあるかも
0776デフォルトの名無しさん2007/07/01(日) 09:32:40
ネイティブで1つ、
インタプリタで1つ、
IL で1つ、の合計3種類あれば十分だな。
ついでに、それぞれ手続き型、関数型、論理型の3種類で、
合計9個の言語があればいい。
0777デフォルトの名無しさん2007/07/01(日) 09:57:40
ネイティブでもsandbox化できるからインタプリタもilもイラネ。
手続き型を単純にしたのが関数型だから関数型イラネ。
0778デフォルトの名無しさん2007/07/01(日) 13:52:27
>>758
それできるの?
a[5][6][7]
とかがいいんだけど
0779デフォルトの名無しさん2007/07/01(日) 13:58:43
できんこともないが。

struct S{
struct S1 {
struct S2 {
int i, j;
int opIndex(int k) { return i * j + k; }
}
int i;
S2 opIndex(int j) { return S2(i, j); }
}
S1 opIndex(int i) { return S1(i); }
}

void main() {
writefln(S()[2][5][3]);
}
0780デフォルトの名無しさん2007/07/01(日) 14:02:33
>>778
できるよ。
0781デフォルトの名無しさん2007/07/01(日) 14:31:41
>手続き型を単純にしたのが関数型
???
07827772007/07/01(日) 16:07:52
手続き型にも関数あるじゃん。
0783デフォルトの名無しさん2007/07/01(日) 16:10:12
偶然、名前が同じだけだろ。
0784デフォルトの名無しさん2007/07/01(日) 16:13:22
関数型の関数という言葉と、手続き型言語の中の関数を混同して勘違いする
人間がまだ居たのには驚いたけど、D言語とは全く関係無いしスルーの方向で。
0785デフォルトの名無しさん2007/07/01(日) 16:17:01
実際の所、関数型の関数と手続き型の副作用のない関数は一緒な罠。
0786デフォルトの名無しさん2007/07/01(日) 16:19:10
手続き型では普通高階関数とか作れねーだろ。
0787デフォルトの名無しさん2007/07/01(日) 16:20:58
>>786
?
http://ja.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E%E9%96%A2%E6%95%B0#.E6.89.8B.E7.B6.9A.E3.81.8D.E5.9E.8B.E8.A8.80.E8.AA.9E.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E9.AB.98.E9.9A.8E.E9.96.A2.E6.95.B0
0788デフォルトの名無しさん2007/07/01(日) 16:22:44
>>787
>一方、#関数を戻り値とする関数を書くことは難しい。 これは戻り値となる関数の実行時にその関数を定義した時点での環境が必要になる(クロージャ)ためである。
0789デフォルトの名無しさん2007/07/01(日) 16:25:31
プログラミングにはまったく疎い人間が聞いてみるが
数学的な意味での関数(写像)を実際に実現できてる
関数のみで構成されてるのが関数型言語って理解でおk?
0790デフォルトの名無しさん2007/07/01(日) 16:26:29
関数型言語は、関数を値のように引数に取ったり戻り値として返したりできる言語だと思う。
0791デフォルトの名無しさん2007/07/01(日) 16:28:26
それってなんてdelegate
0792デフォルトの名無しさん2007/07/01(日) 16:29:12
数学に当てはめようとするのは落とし穴
碌な事が無い
0793デフォルトの名無しさん2007/07/01(日) 16:30:08
>>788
クロージャの実装なんて簡単だろ、常考。スタックの代わりをヒープから確保してespをずらすだけっしょ?
ただ最適化の面から属性で有効にするようにする必要はあるけど。
0794デフォルトの名無しさん2007/07/01(日) 16:33:01
>手続き型を単純にしたのが関数型

まあ、何にせよ最初の↑は無いよな…
0795デフォルトの名無しさん2007/07/01(日) 16:33:11
>>793
言語的にサポートされてない時点で無理がある。
0796デフォルトの名無しさん2007/07/01(日) 16:35:29
見てて思ったが結局は言語レベルあるいはコンパイラレベルで
どこまでやってもらえるかって話に思えるが
その仕様の違いで手続き型と関数型というように分類してるってこと?
結局はどんなプログラミング言語でも他のプログラミング言語の
動きをエミュしようと思えばできるんだろ
手間がどんだけかかるかの問題であって
0797デフォルトの名無しさん2007/07/01(日) 16:40:45
>>789
基本的にはそうかな。
基本的には引数と戻り値があるべきとしてるし、
基本的には同じ引数から同じ値を返すべきとしてるからな。
関数型は。
まあ、そこまで完全にやってる言語は少ないけど。
0798デフォルトの名無しさん2007/07/01(日) 16:42:08
遅延評価はどうよ
lazy
0799デフォルトの名無しさん2007/07/01(日) 16:42:25
>>796
プログラムの組み方の思想レベルでも違いはあるんだけど、
そう思っても大きな間違いはないと思う。
0800デフォルトの名無しさん2007/07/01(日) 16:43:12
D はラムダをサポートしてるから、
あとは関数を動的に作って返せるようになれば
関数型を名乗っていいと思う。
0801デフォルトの名無しさん2007/07/01(日) 16:57:29
>>798
それはただのdelegateだしょ
0802デフォルトの名無しさん2007/07/01(日) 16:59:42
>>788
よくわからんのだけど、デリゲート返すだけじゃあかんの?
0803デフォルトの名無しさん2007/07/01(日) 17:13:24
>>802
delegate内で使う親関数の変数をヒープに取れば同じ…かな?
0804デフォルトの名無しさん2007/07/01(日) 17:26:56
デリゲートの環境ってスコープを抜けると無効になってしまうのか
何で D はクロージャを入れなかったんだろう
0805デフォルトの名無しさん2007/07/01(日) 17:32:44
>>804
そういうの気にせずにクロージャっぽくつかってたんだが、ダメだったのか・・・?
0806デフォルトの名無しさん2007/07/01(日) 17:32:54
ニュースグループで聞いてみたら?
0807デフォルトの名無しさん2007/07/01(日) 17:42:10
クロージャが無いのは仕方がないとして、クローズしてない物をクロージャと呼ぶのは
やめて欲しいな。
0808デフォルトの名無しさん2007/07/01(日) 17:51:36
話が変わって恐縮なのだけど、D2.0で、final(オーバーライド不可能)かつ
const(メンバを変更しない)なメンバ関数って作れないの?

class A{
 // conflicting storage class const
 final const int func(){ return 1; }
}
int main(in string[] args){
 auto a = new A;
 return 0;
}
0809デフォルトの名無しさん2007/07/01(日) 17:55:12
>>807
それ意味が違うから
0810デフォルトの名無しさん2007/07/01(日) 17:59:43
>>808
2.001?
俺はまだDMD2.000のままだけど、エラーでない。

http://d.puremagic.com/issues/show_bug.cgi?id=1277
これ直すときにエンバグしたんじゃないかね。
0811デフォルトの名無しさん2007/07/01(日) 18:03:47
>>808
class A{
 final: const int func(){ return 1; }
}
とすると通るから、バグだろうな
0812デフォルトの名無しさん2007/07/01(日) 18:07:07
バグを直してもそれでまたバグが増えるんじゃあ・・・・
いつも思うんだけどこういうのって系統的なチェックの方法とか
ノウハウってないの?
0813デフォルトの名無しさん2007/07/01(日) 18:08:06
っ DStress
08148082007/07/01(日) 18:10:35
2.001です。なるほど、バグか。サンクス。
やっぱまだ2.0ははやいか……
0815デフォルトの名無しさん2007/07/01(日) 18:17:50
>>809
どゆこと?
0816デフォルトの名無しさん2007/07/01(日) 18:18:20
struct Vertex {
float[3] pos;
};

Vertex a= {
pos:[0.0f, 10.5f, 10.5f]
};

うう・・イニシャライズできない・・・

0817デフォルトの名無しさん2007/07/01(日) 18:19:56
>>813
サンクス Linuxしかないのか
チェックエラーでまくりワロタ
Walterタンはこれを使っているのかな?

>>814
報告よろ
0818デフォルトの名無しさん2007/07/01(日) 18:20:04
ごめんなさい、aをstaticにしたらOKでした。
0819デフォルトの名無しさん2007/07/01(日) 18:20:16
>>816
試してないけど
Vertex a=Vertex([0.0f, 10.5f, 10.5f]);は?
0820デフォルトの名無しさん2007/07/01(日) 18:20:54
ごめんなさい、aをstaticにしたらOKでした
0821デフォルトの名無しさん2007/07/01(日) 18:21:00
>>817
Walterタンはこれとは別に持ってたと思う。
0822818,8202007/07/01(日) 18:24:24
連投ごめんなさい
>>819
それもOKでした m(_ _)m ありがとうございます
08238082007/07/01(日) 18:40:58
>>817
悩むことを言ってくれるな。
英語で文章書けねぇw

誰か代打ち頼めませんか?
0824デフォルトの名無しさん2007/07/01(日) 18:55:20
>>823
うまく行ったかしらんが、bugzilla投げといた。
08258082007/07/01(日) 19:13:30
>>824
ありがとうございます。
0826デフォルトの名無しさん2007/07/02(月) 06:53:07
D 1.018
0827デフォルトの名無しさん2007/07/02(月) 07:09:09
D 2.002
0828デフォルトの名無しさん2007/07/02(月) 07:13:31
What's New for D 2.002

New/Changed Features
* Renamed linux library from libphobos.a to libphobos2.a

D 1.018 はバグフィックスのみ。
0829デフォルトの名無しさん2007/07/02(月) 07:14:31
バグフィックス部分は同じだな。
共通部分のみの修正か。
0830デフォルトの名無しさん2007/07/02(月) 08:35:41
仕様が落ち着いたのかな
そう思うとちょっとさみしい

絶対そうじゃないけどなw
0831デフォルトの名無しさん2007/07/02(月) 12:01:44
D2.002で、

struct Foo {
int f;
}

void add( ref final scope const Foo a)
{
logprint( &a );
}

Foo foo;
add( foo);

コンパイラが落ちます

ところで構造体の参照渡しで、
その引数の変更の無いときの修飾子はどうしてますか?

void add( ref in Foo a) なんてあってもいいような
0832デフォルトの名無しさん2007/07/02(月) 13:43:13
むしろinがその役割を果たしたらいいと思う。
0833デフォルトの名無しさん2007/07/02(月) 16:15:17
ていうか既にinはfinal scope constを意味するんだが?
コンパイラが落ちなきゃいいだけだよな
0834デフォルトの名無しさん2007/07/02(月) 16:45:36
>>833

incompatible parameter storage classes

やってみたが、仕様としてゆるしてないみたい
0835デフォルトの名無しさん2007/07/02(月) 17:17:41
コンパイラがエラーを出す場合、本当にエラーなのかコンパイラのバグなのか見極めないとダメだからな。
0836デフォルトの名無しさん2007/07/02(月) 17:46:30
じゃ見極めた人 結果をどうぞ↓
0837デフォルトの名無しさん2007/07/03(火) 01:01:17
とりあえずコンパイラが落ちるのはコンパイラのバグだと思う。
0838デフォルトの名無しさん2007/07/03(火) 12:38:07
うむ 真理だ ところで誰かこのバグは報告したのか?
0839デフォルトの名無しさん2007/07/03(火) 13:03:38
831ですが、してません。
昨日やろうとしたのですがちょっと怖くなって・・
0840デフォルトの名無しさん2007/07/03(火) 15:11:53
誤爆?
0841デフォルトの名無しさん2007/07/03(火) 15:46:37
動的配列やオブジェクト引数は元々参照渡しされますが、 これらについては、 in/out/ref は参照に対して適用され、中身には影響しません。

For dynamic array and object parameters, which are passed by reference, in/out/ref apply only to the reference and not the contents.

とドキュメントにあるんだが、void add( ref in Foo a)って必要なん?
void add(in Foo a)でfinal scope constな参照渡しなわけだし。
0842デフォルトの名無しさん2007/07/03(火) 15:48:58
あ、構造体か。すんませんした。
ポインタ渡しでinを指定か?
0843デフォルトの名無しさん2007/07/03(火) 16:33:58
>>831
構造体は呼び出し側に変更を加える必要がない場合、普通に値渡しすればいい。
可能な場合、コンパイラが参照渡しに最適化する。
0844デフォルトの名無しさん2007/07/04(水) 11:05:15
scope変数のオブジェクトをスコープ外のscope変数に代入できるんだが、これはこういう仕様なのか?
08458442007/07/04(水) 11:11:53
ああ、外側の変数はscope変数じゃなくてもいいのか。
スコープ外へのコピーはエラーにして欲しいな
0846デフォルトの名無しさん2007/07/04(水) 11:45:51
なぜ?
0847デフォルトの名無しさん2007/07/04(水) 12:01:06
>>846
バグの素にしかならないと思うんだけど、どうよ?

class C { void func(){ } }
void main() {
C a;
{
scope C b = new C;
a = b;
}
if(a !is null) a.func(); // Error: Access Violation
}
0848デフォルトの名無しさん2007/07/04(水) 12:40:01
げげ
たしかに、それはちょっとおかしい
0849デフォルトの名無しさん2007/07/04(水) 13:40:11
つぶしてもつぶしてもまた出てくる

それがバグのバグたる所以ですよ
0850デフォルトの名無しさん2007/07/04(水) 14:04:19
1つバグが見つかったら30はあると思え。
0851デフォルトの名無しさん2007/07/04(水) 14:35:47
C c;
void f(scope C d) {
c = d;
}

こんなこともできるわけだが、これはバグだよな?
0852デフォルトの名無しさん2007/07/04(水) 14:43:39
そのCが構造体とかtypedefあるいはaliasで値渡しならセーフじゃない?
0853デフォルトの名無しさん2007/07/04(水) 14:49:59
そりゃデストラクタのない型ならscopeの影響を受けるわけはないが…
0854デフォルトの名無しさん2007/07/04(水) 14:57:17
>>221 で

>int[] g;
>
>void foo(in int[] a)
>{
>    a = [1,2];    // error, a is final
>    a[1] = 2;   // error, a is const
>    g = a;    // error, a is scope
>}
>
>引数でこれらの操作のどれかをしたいのなら、"in"を使用しないでください。"in"を使うことはD 1.0のコードでは特に意味は無いので、それは後方互換になるはずです。

って書いてあるから、もろバグじゃないかな。
0855デフォルトの名無しさん2007/07/04(水) 23:21:32
こいりゃバグだね
0856デフォルトの名無しさん2007/07/04(水) 23:26:10
こいりゃ
0857デフォルトの名無しさん2007/07/05(木) 00:05:02
こいりゃ ← じっと見つめると松井秀喜に見えない
0858デフォルトの名無しさん2007/07/05(木) 00:12:03
電脳こいりゃ
0859デフォルトの名無しさん2007/07/05(木) 00:21:25
にしこり というのが本名で、松井はリングネームだと思ってた
0860デフォルトの名無しさん2007/07/05(木) 02:03:40
alias int* pint;
static if(is(pint X == X*) ){
 pragma(msg, X.stringof);
}
これでintってなるなら、
alias const(int) cint;
static if(is(cint X == const(X)) ){
 pragma(msg, X.stringof);
}
これとか、
alias const(int*) cpint;
static if(is(cpint X == const(X*)) ){
 pragma(msg, X.stringof);
}
これもintになるべきじゃないか?って思うんだけどどう思う?
0861デフォルトの名無しさん2007/07/05(木) 02:10:23
>>860
なるべき。
0862デフォルトの名無しさん2007/07/05(木) 02:17:31
static if(is(int X == const(X)) ){
pragma(msg, X.stringof); // int
}

const()は完全に無視されているようだな。
0863デフォルトの名無しさん2007/07/05(木) 04:00:00
( ^ω^) 乗り遅れた感があるお。2.002だお。
ttp://ranobe.com/up/src/up198768.zip
0864デフォルトの名無しさん2007/07/05(木) 04:43:25
( ^ω^)
0865デフォルトの名無しさん2007/07/05(木) 06:33:54
うはwwwwおkwwwっうぇwwwwwwwwwwっうぇwwwwwwwwwwwwwwっうぇ
0866デフォルトの名無しさん2007/07/05(木) 07:26:27
D 2.003
0867デフォルトの名無しさん2007/07/05(木) 07:28:08
><
さっきうpだてしたばっかなのに
0868デフォルトの名無しさん2007/07/05(木) 07:49:26
ダイブミサイルTEEEEEEEEE
0869デフォルトの名無しさん2007/07/05(木) 07:49:57
>>163
いいなそれ^^
0870デフォルトの名無しさん2007/07/05(木) 07:51:09
スカルマン神
0871デフォルトの名無しさん2007/07/05(木) 07:53:17
鏡寝る予定だから切らないほうが有効活用・・・って切れた\(^o^)/
0872デフォルトの名無しさん2007/07/05(木) 07:53:58
なんという誤爆の嵐・・・いったいなんなんだ
0873デフォルトの名無しさん2007/07/05(木) 09:04:31
2.003 消えてるな
0874デフォルトの名無しさん2007/07/05(木) 13:52:58
What's New for D 2.003
Jul 1, 2007
New/Changed Features

    * Added 0x78 Codeview extension for type dchar.

Codeview extension...?
なんだそりゃ?
0875デフォルトの名無しさん2007/07/05(木) 14:05:32
デバッガ用のタイプレコードじゃねえの?
0876デフォルトの名無しさん2007/07/05(木) 14:08:19
よく分からんけど、デバッガ関係の話っぽい
dcharの型情報をCodeview形式で埋め込むようにしといたとか、
そういう感じの話じゃね、たぶん。
0877デフォルトの名無しさん2007/07/05(木) 14:14:59
   ●               ●
    ●             ● <ちょっとびっくり機能>
     ●           ●
      ●         ●   全体をコピペすると、
       ●       ●    使用中のWindowsの
        ●     ●     バージョンが表示される。
         ●   ●
          ● ●
   Microsoft Windows 95 OSR2
          ● ●
         ●   ●      (板によって非対応の場合あり)
        ●     ●
       ●       ●
      ●         ●
     ●           ●
    ●             ●
   ●               ●
0878デフォルトの名無しさん2007/07/05(木) 19:56:34
macOS X
0879デフォルトの名無しさん2007/07/05(木) 20:11:46
Mac OS X 10.4.10 (i386)
0880デフォルトの名無しさん2007/07/05(木) 20:51:54
DOS (v1.010)
0881デフォルトの名無しさん2007/07/05(木) 21:26:20
   ●               ●
    ●             ● <ちょっとびっくり機能>
     ●           ●
      ●         ●   全体をコピペすると、
       ●       ●    使用中のWindowsの
        ●     ●     バージョンが表示される。
         ●   ●
          ● ●
   Microsoft Windows 95 OSR2
          ● ●
         ●   ●      (板によって非対応の場合あり)
        ●     ●
       ●       ●
      ●         ●
     ●           ●
    ●             ●
   ●               ●
0882デフォルトの名無しさん2007/07/06(金) 22:11:46
bindの使い方間違ってますか?

dmd2.002
C:\...\dmd\src\phobos\std\bind.d(837): declaration _D3std4bind9EmptySlot6__initZ forward declaration

import std.bind, std.stdio;
void foo(int a, int b) {
 writefln(a,"*",b,"=",a*b);
}
void main() {
 foo(10, 5);
 bind(&foo, 10, 5)();
 bindAlias!(foo, 10, 5)();
}
0883デフォルトの名無しさん2007/07/06(金) 22:23:35
bindAliasの使い方間違ってね?
0884デフォルトの名無しさん2007/07/06(金) 23:23:14
間違ってるみたいですね
でも bindAlias をコメントアウトしてもエラーは変わらないような
0885デフォルトの名無しさん2007/07/07(土) 23:11:36
1.018 / 2.002 どちらでも bind が使えなくなっているみたいですね・・・
0886デフォルトの名無しさん2007/07/08(日) 13:08:35
配列のプロパティっぽく関数呼び出す機能壊れてる?
0887デフォルトの名無しさん2007/07/08(日) 16:40:07
>>886
具体的にはどんなふうになるの?
0888デフォルトの名無しさん2007/07/08(日) 16:42:51
import std.stdio;
void func(int[] a) { writefln(a.length); }
void main() {
int[] a = [0, 1, 2];
a.func; // Error: no property 'func' for type 'int[]'
}
0889デフォルトの名無しさん2007/07/08(日) 17:08:34
括弧付きじゃないと呼び出せないと思うけど、
そういえばこれじゃあプロパティ風じゃないな。
0890デフォルトの名無しさん2007/07/08(日) 17:44:28
>>889
前からそうだっけ?
0891デフォルトの名無しさん2007/07/08(日) 19:34:49
>>889じゃないけど前からそうだったような希ガス
しかしこれが仕様とも思えないような・・・
0892デフォルトの名無しさん2007/07/08(日) 20:47:22
ほんとだ呼びだせないようになってる。
0893デフォルトの名無しさん2007/07/08(日) 22:55:45
前から括弧付きじゃないと呼び出せなかったと思うんだが
0894デフォルトの名無しさん2007/07/09(月) 12:15:47
配列のプロパティ風のやつは前からだよ
普通に仕様かと思ってたけど違うのかな
0895デフォルトの名無しさん2007/07/09(月) 12:17:39
クラスメソッドをプロパティ風に扱うのはあったけど配列については出来なかったような。
0896デフォルトの名無しさん2007/07/09(月) 16:35:07
D言語の精神にのっとればあくまで「使いやすい」仕様であるべきで
そう考えるとなんでこういう仕様になっているのか俺にはわからない
0897デフォルトの名無しさん2007/07/09(月) 16:39:22
使い勝手以前に「わかりづらい」のはいただけないよな。
普通のメンバメソッドなら括弧いらないのに、プロパティ風呼び出しだと括弧ないとエラーになるのは一貫性に欠ける気がする。
0898デフォルトの名無しさん2007/07/09(月) 17:12:49
というわけでどなたかニューズグループででも聞いていただけないだろうか
0899デフォルトの名無しさん2007/07/09(月) 17:26:41
まあ単純に配列型のプロパティの中に関数風呼び出しをするものがないので、
配列.関数風()の解釈に曖昧さがないということだとは思うが。

length(int [] hoge) {}
int[] foo;
foo.length;

は目も当てられんだろ。
0900デフォルトの名無しさん2007/07/09(月) 17:30:20
そんなものエラーにしてしまえば…
0901デフォルトの名無しさん2007/07/09(月) 18:17:30
なるほど それなら仕方ないか
0902デフォルトの名無しさん2007/07/09(月) 18:23:22
文法に一貫性がないのが困ったなぁ。
せめて.sizeと.length()だけならいいのに。
0903デフォルトの名無しさん2007/07/09(月) 20:55:37
一貫性を優先するなら>>899の言ってるようにエラーにしてしまうか・・・
他にいい解決策はないものか・・・・
プロパティですよってわかる記号を付けるとか・・・・
それも変か
0904デフォルトの名無しさん2007/07/09(月) 21:30:18
エラーでいいがな
lengthとかのプロパティに使ってる名前の関数なんていらんだろ
プロパティとわかる記号ってfoo@initにしちゃうとか?
うーん
0905デフォルトの名無しさん2007/07/09(月) 21:42:33
なんというperl記号
09069042007/07/09(月) 21:45:36
関数をプロパティ風に使えるようにするなら
やっぱり括弧なしでも呼べるようにして
あいまいだったらエラーにするのがいいと思う
0907デフォルトの名無しさん2007/07/09(月) 22:03:22
俺もそう思ってた  (笑)
0908デフォルトの名無しさん2007/07/09(月) 22:17:46
ダメだ
同じ構文にしてよと言おうと思ったが英語に挫折したw
むりぽ
0909デフォルトの名無しさん2007/07/09(月) 22:19:26
プロパティってオーバーライドできないんだっけ?
0910デフォルトの名無しさん2007/07/09(月) 22:20:12
できるはずだよ。普通のメンバ関数と同じ。
0911デフォルトの名無しさん2007/07/09(月) 23:35:27
2つ目の引数付き関数でlengthプロパティをオーバーライドしたら
a.length(3)とかでプロパティを呼び出すことになるの?

そうしたら>>899のlengthを同じく2つ引数のある関数で定義しなおすと
結局は名前衝突が起こる?
0912デフォルトの名無しさん2007/07/09(月) 23:41:01
なんかちょっと言いたいことが判らん。
オーバーロードとオーバーライド間違えてないか?
0913デフォルトの名無しさん2007/07/09(月) 23:45:50
そか失礼
オーバーロードか
0914デフォルトの名無しさん2007/07/09(月) 23:46:26
ていうかやってみればいいんじゃまいか
0915デフォルトの名無しさん2007/07/10(火) 05:25:04
まぁ、プロパティなんてウンコ臭いものはやめて素直にメソッドをつけりゃいいのでは?
()なんてコードアシストが使えるようになればレンチン状態で入力できるし。
0916デフォルトの名無しさん2007/07/10(火) 11:59:24
だぁね
0917デフォルトの名無しさん2007/07/10(火) 17:04:20
プロパティはメンバ変数とsetter/getterメソッドを同じ構文で
呼び出せるのが利点だから、配列についてプロパティ形式で
呼び出せる必要は特にないんだよね。

むしろ、いまあるプロパティのうち、sortとかはメソッド形式にしたほうが
いい気がしないでもない。
0918デフォルトの名無しさん2007/07/10(火) 17:06:03
sortとかrehashとかプロパティってのはすごく気持ち悪い
0919デフォルトの名無しさん2007/07/10(火) 21:32:50
>>918に同意
int[] v = [3,2,1], w;
w = v.sort; // 最初間違ってこんな感じで書いてたぞ
0920デフォルトの名無しさん2007/07/10(火) 21:45:56
Ruby だとカッコ省略できるし、
それで慣れてると、カッコなしでもありかなとは思う。
0921デフォルトの名無しさん2007/07/10(火) 21:51:39
かっこなしだとVBみたいで恥ずかしい
0922デフォルトの名無しさん2007/07/10(火) 23:03:27
あーでも元から()省略できれば
writefln("Hello,world.".toupper.tolower)
こういう風にスマートに書けるんだけどなぁ・・・
0923デフォルトの名無しさん2007/07/10(火) 23:47:19
2バイト削るよりも可読性を向上させてくれ
0924デフォルトの名無しさん2007/07/11(水) 00:23:23
Ruby の()の省略がキモイと感じてる俺としては、
>writefln("Hello,world.".toupper.tolower)
は嫌過ぎる
0925デフォルトの名無しさん2007/07/11(水) 04:28:37
要は趣味の問題ってことだね
0926デフォルトの名無しさん2007/07/11(水) 06:10:40
趣味の言語ですから
0927デフォルトの名無しさん2007/07/11(水) 11:29:11
>>924
関数呼び出しとデータアクセスが同じ記法なのは俺もキモイと思うけど、
名前次第で我慢出来なくもない気もする。プロパティっぽい名前なら
ギリギリセーフ。array.sort は嫌だけど、array.sorted なら許せる。
あー、でもやっぱキモイな。
0928デフォルトの名無しさん2007/07/11(水) 12:37:46
>>919の書きかたって間違ってるんだ^^ 知らなかった
ソートしたものを返すんじゃねーの?
0929デフォルトの名無しさん2007/07/11(水) 12:49:21
"sort in place"
0930デフォルトの名無しさん2007/07/11(水) 12:53:05
void main() {
const(int)[] v = [3,2,1], w;
w = v.idup.sort;
writefln(w);
}

invariant型の配列をソートできるんだが、いいのか?
0931デフォルトの名無しさん2007/07/11(水) 16:01:19
vそのものを変えるわけじゃないからいいんじゃないの?
むしろそれができないとなるとおかしいように思うんだが・・・
0932デフォルトの名無しさん2007/07/11(水) 16:12:48
idupのことだろ。
0933デフォルトの名無しさん2007/07/11(水) 16:39:42
>>928 >>930
int[] v = [3,1,2];
v.sort;
writefln(v); // [1,2,3]
0934デフォルトの名無しさん2007/07/11(水) 16:41:16
>>931,933

w = v.idup.sort;
    ^^^^

これをソートできるのがおかしいって言いたかったんだけど。
w は表示するために代入してるだけで深い意味はない。
0935デフォルトの名無しさん2007/07/11(水) 16:45:13
void main() {
writefln("foobarbaz".sort);
writefln("foobarbaz");
}

こういう例のほうが判りやすいか。
0936デフォルトの名無しさん2007/07/11(水) 16:45:32
>>933
invariant(int)[] v = ([3,1,2]).idup;
v.sort;
writefln(v); // [1,2,3]
0937デフォルトの名無しさん2007/07/11(水) 17:00:25
なるほど
invariant型がin placeでソートできるっていうのは仕様なのかな?
そうは思えないが・・・
0938デフォルトの名無しさん2007/07/11(水) 17:21:18
>>937
さすがにバグだろ…。報告よろ。
0939デフォルトの名無しさん2007/07/11(水) 17:23:59
D2はバグだらけで報告する気になれん。
どれがバグでどれが仕様でどれが未実装なのかもよくわからんし。
0940デフォルトの名無しさん2007/07/11(水) 17:25:33
>>938
sortの引数がinoutだと考えれば変ではないのが難しいところ。
0941デフォルトの名無しさん2007/07/11(水) 17:29:43
参照が取り替えられてるわけではないだろ。
0942デフォルトの名無しさん2007/07/11(水) 17:31:19
D2のバグを議論するのは時期尚早と出ました
0943デフォルトの名無しさん2007/07/11(水) 17:45:55
ところで今たまたま手元にあったdmd1.015に戻してみても
やっぱりbindが動かないみたいなんだが
どの時点で動かなくなったのかな
0944デフォルトの名無しさん2007/07/11(水) 17:46:27
>>941
試してみたけど参照は変わってないね。こりゃどう考えてもバグ。
0945デフォルトの名無しさん2007/07/11(水) 18:22:43
ちょっと寝てくるから、2.010出たら起こしてくれ。
0946デフォルトの名無しさん2007/07/11(水) 19:20:57
ttp://www.digitalmars.com/d/changelog.html
0947デフォルトの名無しさん2007/07/12(木) 11:32:35
いつの間にかDFLをGTKベースにする動きが始まってたようだ
ttp://wiki.dprogramming.com/DflGtk/HomePage
0948デフォルトの名無しさん2007/07/13(金) 12:55:26
2.004マダー?(・∀・)っ/凵チンチン
0949デフォルトの名無しさん2007/07/13(金) 17:27:46
2007ならもうきてるよ
0950デフォルトの名無しさん2007/07/13(金) 21:20:26
どうしてプライベート仮想関数が禁止されているんでしょうか
NVIパターンで使おうと思ったらエラーが出たのですが
0951デフォルトの名無しさん2007/07/13(金) 21:22:08
ちなみにこんな感じです
class A {
public void foo(){ doFoo(); }
private abstract void doFoo();
}
class B : A {
private void doFoo(){ ... }
}
0952デフォルトの名無しさん2007/07/13(金) 21:35:36
privateメンバは子クラスが認知できない関数。
したがってオーバーライドすることはできない。
そういう場合はprotectedを使うべし。
0953デフォルトの名無しさん2007/07/13(金) 21:46:12
返信どうも
そうなるとC++では可能な理由はなんなんでしょうね
0954デフォルトの名無しさん2007/07/13(金) 21:53:02
C++ではプロテクションに関わらずvirtualをつけると仮想関数にできるけど、
Dではデフォルトで仮想関数で、private関数は仮想関数にならない。
ってところか。単に設計思想の違いだと思うが。
0955デフォルトの名無しさん2007/07/13(金) 22:02:10
ああデフォルトで仮想関数・・・
実際>>951でprotectedにしてもなんら違いはなさそうですもんね
0956デフォルトの名無しさん2007/07/16(月) 15:28:32
そろそろ更新こないかなぁ・・・
0957デフォルトの名無しさん2007/07/16(月) 16:29:20
とにかくphobosを全部動くようにして欲しいぞ
0958デフォルトの名無しさん2007/07/16(月) 22:51:30
とうとうTango 0.99RC3のロードマップが100%になった
0959デフォルトの名無しさん2007/07/17(火) 00:00:32
Tango2.0マダー
0960デフォルトの名無しさん2007/07/17(火) 00:10:31
普及もしてないのに2.0って・・・
0961デフォルトの名無しさん2007/07/17(火) 00:24:32
きっと3.1から普及しはじめるよ。
0962デフォルトの名無しさん2007/07/17(火) 00:33:50
Tango95は爆発的に普及するが、88年後の話を今からしてもしょうがないんだ。
0963デフォルトの名無しさん2007/07/17(火) 02:19:19
Tango 1.0と2.0の違いってD1.0向けか2.0向けかっていう理解でおk?
09649592007/07/17(火) 09:53:01
>>963
本当にあるかどうかはおいといて、俺はそんなつもりでいいました

次スレの季節ですね
0965デフォルトの名無しさん2007/07/17(火) 11:24:01
const(char)[]がキモいと思ってるのは俺だけ?
当分2.0にはしたくない・・
0966デフォルトの名無しさん2007/07/17(火) 13:02:14
わかりやすいとおもうなぁ
0967デフォルトの名無しさん2007/07/17(火) 13:23:00
const char[] foo = "foo"; // 1.0
を
const(char)[] bar = "bar"; // 2.0
と書くと億劫だけど
string boo = "boo"; // 2.0
と書けばいいんだよ
0968デフォルトの名無しさん2007/07/17(火) 15:26:38
Tango 0.99RC3リリース
0969デフォルトの名無しさん2007/07/17(火) 15:42:21
>>965
もうv1は時代遅れですよ。
0970デフォルトの名無しさん2007/07/17(火) 16:04:11
ウォルターは日本語をハックしてこのスレを見るべきだな
0971デフォルトの名無しさん2007/07/17(火) 16:33:58
気持ちはわかるが
むしろ俺らがアナウンス見に行くべきだろ常考
0972デフォルトの名無しさん2007/07/17(火) 16:47:08
constめんどくさー
readLineの返り値がconst付きって・・・
そりゃねーよ
0973デフォルトの名無しさん2007/07/17(火) 19:31:52
どこから来たかわからない書き換えられる配列を受け取るのは不安じゃないか
かといってconst(char)[]を返されても不便だから
配列を返すときはクラスのメソッド側が.dupして返すべきだと思うんだ
場合によってはクラスのカプセル化を破壊わけだし
0974デフォルトの名無しさん2007/07/17(火) 22:01:46
ちなみにconstとinvariantの違いって何だ?
把握してないんだが
0975デフォルトの名無しさん2007/07/17(火) 22:20:43
invariantはそこにあるデータは絶対に変わらない。
constはそこにあるデータを変えることができない。
0976デフォルトの名無しさん2007/07/17(火) 22:26:35
invariantは誰も変えることができない。
constは俺が変えることができない。
0977デフォルトの名無しさん2007/07/17(火) 23:40:47
>>972
確かに、readLineは新たに配列をnewして返すような実装になってるから、
constはいらないかもしれん。

0978デフォルトの名無しさん2007/07/18(水) 00:12:39
>>975,976
把握した・・・が
invariantに既に入っているデータは誰(?)が入れたんだ?
語弊ありそうな予感
0979デフォルトの名無しさん2007/07/18(水) 00:14:46
プログラム内ではってことか
constは関数内とかの狭い領域で書き換え不可ってことか?
あれ?
0980デフォルトの名無しさん2007/07/18(水) 06:09:09
リテラルか、invariant なデータで初期化された変数が invariant じゃないかな。
0981デフォルトの名無しさん2007/07/18(水) 06:36:52
>>978
    ____
   /__.))ノヽ
   .|ミ.l _  ._ i.)  
  (^'ミ/.コンパイラ  
  .しi   r、_) |  invariantはわしが育てた
    |  `ニニ' /  
   ノ `ー―i

constは、C++でも仮引数がconstとか、const関数とかよく使うだろ。
そのスコープにおいて副作用を起こす操作が出来ない。
0982デフォルトの名無しさん2007/07/18(水) 10:04:30
>>980
しかし、配列リテラルはinvariantではない。
0983デフォルトの名無しさん2007/07/18(水) 11:06:55
あれ
_d_assert、オリジナルがつくれないぞ?

D2.002っす
0984デフォルトの名無しさん2007/07/18(水) 19:49:13
D2.0のバグの話は無益だぜ
バグだらけだから
仕様検討がいいよ
0985デフォルトの名無しさん2007/07/18(水) 20:25:56
更新こないなぁ・・・
0986デフォルトの名無しさん2007/07/18(水) 20:43:21
実務で使用されること無く2.0へ・・・
JCPみたいなコミュニティ作って預けちゃえばいいのに
0987デフォルトの名無しさん2007/07/19(木) 00:04:35
把握した
0988デフォルトの名無しさん2007/07/19(木) 06:57:12
もっと言語仕様をシンプルにできないものか。
0989デフォルトの名無しさん2007/07/19(木) 07:09:24
>>988
っ Brainfuck

言語をシンプルにしすぎても書きにくくなるんで、
コードを書いたり読んだりするときの負担が最小になるよう、
うまくバランスの取れた設計が求められるかな、と。
トリック頼みになるところは言語使用で策定して欲しいというところはある。
複素数リテラルとかは、言語使用は複雑になるが、
クラスで実装とかやりたくないし。
0990デフォルトの名無しさん2007/07/19(木) 10:09:28
次スレ
0991デフォルトの名無しさん2007/07/19(木) 10:21:06
http://pc11.2ch.net/test/read.cgi/tech/1184807424/
0992デフォルトの名無しさん2007/07/19(木) 22:20:39
埋めますね
0993デフォルトの名無しさん2007/07/19(木) 22:21:20
一人で埋めるわ
0994デフォルトの名無しさん2007/07/19(木) 22:22:12
がんばるよー
0995デフォルトの名無しさん2007/07/19(木) 22:22:45
980越えたら埋めなくても一日たったら落ちる。
0996デフォルトの名無しさん2007/07/19(木) 22:22:52
とうりゃぁー
0997デフォルトの名無しさん2007/07/19(木) 22:23:32
えーそうなんですかー
埋めるけど
0998デフォルトの名無しさん2007/07/19(木) 22:23:50
10レスでも有効に使えよ。もったいない
0999デフォルトの名無しさん2007/07/19(木) 22:25:06
なんかもうどうでもいいや
有効に使ってもいいけど次スレでその会話するのも面倒じゃね
1000デフォルトの名無しさん2007/07/19(木) 22:26:28
1000ならD言語が世界を沈没させる
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。