D言語 Part34©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>473
自分で書くならtupleofとtraitでdupテンプレートを書いて
S s2 = s1.dup;
っていうのを思いつきました。 >>433
今更だけどありがとう、
そんなアタリマエのことを全然思いつかなかったw
CTFEすげー(今更) VS2013とLDCでビルドしたら、
LINK : fatal error LNK1104: cannot open file 'legacy_stdio_definitions.lib'
というエラーが出たんですけど、原因は何が考えられますか? >>478
読み込むライブラリの場所の指定がおかしい >>479
うーん、わからないです。
legacy_stdio_definitions.libがHDDの中にないし、ぐぐってもなんなのかよくわからない。 >>478
デフォルトは VS2015 の設定だから
etc/ldc2.conf の該当行 を書き換えてくれってどっかに書いてあった
"-Llegacy_stdio_definitions.lib" とその前の行のカンマを消せばいい >>481
ldc.confにlegacy_stdio_definitions.libはありませんでした。
色々、調べてて気づいたんですけど、LDCを使うにはLLVMもインストールしないといけないですか?
LLVMのバイナリは公開されていないみたいだし、ビルドしないといけないとなると面倒ですね。
日本語の解説サイトもなさそうだし難易度が高い。 忘れてた VS2015 以外のバージョンで動かすには
LDC をその設定で再構築してくれと書いてあった
今探してもどこだったか見当たらないけど…
たぶん VS2015 入れるのが一番簡単 >>483
なるほど・・・VS2015なら簡単でしたか。 D言語でGCが動かなせない環境(組み込み環境)で
クラスを使ったコードを走らせるために手動でメモリ管理をする(配置new)
みたいなC++的な使い方できますのん?
もっと具体的に言うと、
メモリ管理クラスをD言語で書きたいんだけど・・・
できれば、ほかの言語(C/C++)を混ぜたくない。
Dでこの望みは叶えられる?
GCが完璧な言語で何を言ってるんだって話だけど
C言語とABI互換バイナリが吐ける言語でかつ、きれいな構文のDはかなり魅力だから、つい。 >>486
あざます!!!!
ちとググってみましたけど
WikiにExplicit Class Instance Allocationっておもいっきり書いてありました・・・
手元の環境でもそれ書いたら動いたので
組み込み先の環境でもコレができるか試してみます! foldとかHaskellみたい
いいぞもっとやれ
実行時のパターンマッチとかどんどんやって パターンマッチは本当に欲しい
castSwitchは型で分岐するだけで不満が残る
ついでにAlgebraicもいい感じにしてほしい Cライクな構文でパターンマッチをどう表現するか?
dropThree :: [a] -> [a]
dropThree (_:_:_:xs) = xs
dropThree _ = [] >>491 を読んで、>>489 に必要なのは490ではなくて
if (auto a = cast(A)x) if (0 < a.b) {...}
の省略表記みたいのなのかなと思った。 今試してて気づいた
if (auto a = 0 < (cast(A)x).b, cast(A)x) {...}
は通るんだね。キャスト2回いるけど。 あ、バグですらないや。結果を使わないからカンマの前半が評価されてないだけだ。
スレ汚しでしたorz >>492
考え直してみたら、俺が欲しいのは、クラス以外にも対応したcastSwitchと多重代入かなと思った
最初に欲しかったのは定数もパターンとして扱えるようなものだけど、それ自体は条件分岐で事足りる さあ早く shibuyad とやらの潜入リポート作成に戻るんだ new int[][](10,10)
なんてあったんだな・・・今の今まで律儀にループしてたわ・・・
恥ずかしい レスポンシブなウェブページになってるね
https://dlang.org/ Dってエルミート行列の固有値と固有ベクトルを下か上の三角行列から出してくれるライブラリある? 知らないが、
「Cでそれ扱ってるライブラリ」→「Dのバインディング」の順番で探すと見つかるかもしれない。 そんな劣化バインディングの出てくる場面じゃないと思う
Dよお前の力はその程度かッ バインディングに劣化とそうじゃないものの区別方法を教えれ EUC-JPの文字列をUTF-8にエンコードするにはどうやればいいですか? >>508
iconvかicuのバインディングを探します >>509
なるほど。
標準ではできないんですね。 >>506 複素数はがんばってほしいよね。Dに。
>>510 EUC-JPは滅んだんだよ!もうそういう事にしようよ! EUC->(簡単)->JIS->(どのAPIがいい?)->UNICODE->(簡単)->UTF8 writeにクラスを渡した時クラス名だけじゃなくて中身も表示させたいんだが何に手を加えればいいんだろか? >>514
即座に返事くれてすごい助かった
ありがとうございます D言語でクラスを使って dmd -c Dソース でコンパイルだけして
GCC(mingw)でWindows用dllをクロスコンパイルする時、リンカが参照できないエラー吐くけども
参照できないメソッドはこれ
_D9invariant12_d_invariantFC6ObjectZv
_d_assert_msg
この参照できないメソッドが入ってるライブラリとその依存関係にあるライブラリって
どのファイルか分かります? そうやって混ぜてコンパイルするのは無理…で普通は済む問題なんだけど
何がしたいのかしら >>517
https://github.com/kubasz/uefi-d
これを参考に、UEFI AppをD言語で作りたいんだけども、
クラスを使うとリンクエラーでてしまい と言う話で、>>516
やっぱり、Dのクラスの仕組み上、こういう変な使い方するのは厳しいかな >>519
サンプル自体ビルドは通ってQEMUで動作確認済みです。
確認済みのサンプルソースに、追加で適当なクラス
(プリミティブ型(検証時はintのみ)のメンバ1つとコンストラクタ、セッタ、ゲッタのみ)とか
プリミティブ型(同上)メンバのみ構造体を定義すると
リンクしないといけない何かが足りなくなるらしいと言うところです それなら
-debug -release のオプションの不一致かな
druntime の debugあり/なし バージョンが分かれてるのかな 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
・ >>521
とりあえず、Objectのスタブを見つけたので、試しにコンパイルだけしてみました。
https://github.com/JinShil/D_Runtime_ARM_Cortex-M_study/wiki/1.3-Structs
これをそのままobject.dにコピペして、コンパイルだけ通そうとしたんですが
dmd -v -c object.d
binary dmd
version v2.070.2
config /etc/dmd.conf
parse object
importall object
semantic object
semantic2 object
semantic3 object
Error: undefined identifier 'Error'
Error: undefined identifier 'Error'
ってことなので、
class Error{
this(string){}
}
こんな感じのを作って、再度ビルドしたら、DMDが保護例外で落ちたんですが
D言語わからないですけど、多分CTFEが動いたんですかね?
Errorクラスの最小実装ってどうすればいいかわかります? ごめんなさい、話が飛んでた。(ドツボにはまってました)
>>516は一旦解決しました。ありがとうです。
-releaseオプションつけたら、一先ずassert関連の
リンクエラーは出なくなりました。 Dって長方形配列を動的に確保するにはどうするのがベストなんでしょう? >>533
おお、この記法でギザギザ配列回避できるのか!ありがとうございます >>535
これがまさに求めていたものだった
日本語のページではこれ全然見つからないし教えてくれなかったらこれに気付かず過ごすところだった
ありがとうございます! それまだ入ってから半年も経ってないし
experimental な上に注目度高いからガンガン変わるよ DerelictAllegro用のdllファイルがAllegro公式漁ってもみつからねぇ
いっそ同封してくれりゃいいのに dってpythonでやれるように関数の引数としてクラスをとることは出来ますか? 型と値は別物なので、Pythonのtypeクラスみたいなものは無いはず
テンプレートでは型を引数に取れるからそれで大概足りるしな そのままのものはなくても
__traits/std.traits を隅々まで見るとだいたいのことは出来る なるほどdでは型を引数にしたかったらテンプレートを使うんですね
わかりましたありがとうございます すいません、>>535のndsliceを包含したクラスでnumpyのように動的にshapeを変えられるクラスを作ることは可能でしょうか?
slicedの引数が動的配列ではいけないせいでスライスの形をメンバ変数として持てず、Sliceの次元がコンパイル時に決定されていないといけないせいでslicedの結果をメンバ変数として持てなくて困っております。 >>546 同じインスタンスに対してshapeをかえるのはむりっぽいとおもわれ
決め打ちできる所までtemplate化していくしかないきがす
https://dpaste.dzfl.pl/32747b208179 >>547
やっぱり無理でしたか……
コードの例まで載せてくれてありがとうございます。参考になりました テキストファイルをstringに読み込んでstd.string.indexOfを使うと
Invalid UTF sequence: e5x a3x - Attempted to decode past the end of string (at index 2)
という実行エラーが出ます。
テキストファイル自体は、TeraPadで開くとUTF-8として自動認識されているのですが、
D言語の標準ライブラリが認識してくれない原因は何が考えられますか? エラーメッセージそのまま
文字列が中途半端なところで終わってる
読み込むサイズが足りないか、元々ファイルがおかしくてTeraPadが開く時に自動で直してくれてるのか >>550
thx
コードの中に、文字列が中途半端に終わってる部分がありました。 D言語の複素数ってなんか組み込みのとライブラリのがあってしかも行き来が不自由なんだけどどうなってんだこれ ライブラリの方を使う
組み込みのやつは互換性のために残してあるだけ
https://dlang.org/deprecate.html 「ライブラリで実現できる」「言語仕様を小さくする」とかで
機能追加が却下されたり言語の機能が削られたりしてるが
「できる」じゃなくて本当にライブラリ側でやった方が良いのかどうか検討してからにして欲しい
言語仕様の大きさなんてユーザには関係ないよ、必要な部分しか使わないんだから 言語仕様が小さくなってフットワークが軽くなる(== 破壊的変更が増える)
ならそれはユーザ体験の向上であろう。
さあはやく俺のstd.math.expi多用したコードをはじくのだ! 初期の頃は、ライブラリより構文側でやった方が最適化できるというスタンスだったのに
いつの間に方針転換したんだろな 少なくとも>>553読む限りでは、需要がないと判断されただけに見えるけど
http://dlang.org/builtin.html でも最初に挙げられてる理由は「よく使われる」だし
8年間futureのままだったが、今月ようやく警告を出すPRが出たんだな >>559
CTFE が充実したとかLDCにぬかれたとかありそう
それに PreciseGC が未だにないのにビルトイン型だけ充実してますと言われても困る Pythonでいうところの
np.array([[[i,j] for i in range(3)] for j in range(5)])
や
np.array([[i,j] for i in range(3) for j in range(5)])
はDではrangeやndsliceを使って一行くらいで表現できますか? >>562
import std.algorithm, std.range;
3.iota.map!(a=>5.iota.map!(b=>[a,b])).join
ndslice使ってないけどこんなんですか >>563
おお、綺麗だ……
まさかpythonより短く書けるとはびっくりしました。
ありがとうございます dmcの質問なんですけど
a->b(a);
みたいなオブジェクトaに対するインスタンスメソッドbの呼び出しを
#define M(x, y) x->y(x)
みたいに定義して
M(a, b);
と書きたいのですが
エラーになります
どうマクロを書くのが正しいのですか >>566 俺の環境ではその書き方のままで動くけど?
そもそもそのマクロの意図がわからんが。
http://codepaste.net/j8ub3f 現象がdmc限定っぽかったのでここで質問しました
実際のコードはメソッドにいくつかパラメータ(可変長)があって
a->b(a);
のケース以外に
a->b(a, c, d, e);
でも呼ぶケースがあるので
#define M(x, y, ...) x->y(x, ## __VA_ARGS__)
みたいに定義して
M(a, b);
するとエラーになります
条件後出しで済みませんでした 「##」 を無くしてもエラーになるんです
#define M(x, y, ...) x->y(x, __VA_ARGS__)
M(a, b); 可変個引数が0個の場合、C99的にはコンマが余っちゃうからそれぞれ独自拡張しますってリンク先に書いてあります。
dmcはもうあんまり使わないほうがいいかも
http://en.cppreference.com/w/cpp/compiler_support
時代はDだよね!?(スレチ回避) ありがとうございます!!
Dで書き直すことにします!!! ■ このスレッドは過去ログ倉庫に格納されています