Closed oyamad closed 8 years ago
JuliaTokyo 6 で @bicycle1885 さんにいろいろ教わったのでここに記録しておく.
1.
上の例じたい (Tuple t
から t[2:end]
を返す) は Base.tail
でできる.
julia> Base.tail((1, 2, 3))
(2,3)
2. Tuple から任意の i 番目の要素を落とす方法はここに書いてある.
3.
Tuple t
から t[1:end-1]
を返すのは,0.5に Base.front
というのが入っていました.
julia> Base.front((1, 2, 3))
(1,2)
こんにちは. 文脈を説明することなしに質問するのは難しいのですが,質問させていただきます.
自然数
N
をパラメタに持つタイプを引数とし,N-1
をパラメタに持つタイプを返り値にするような関数を,@code_warntype
で問題がないように書くにはどうするものなのでしょうか.たとえばこんな関数を書きたいとします. (別に Tuple である必要はなく,N 次元 Array の input,N-1 次元 Array の output でもかまいません.)
(
Tuple{Int64,Int64,Int64}
を入れるとTuple{Int64,Int64}
が返る.)これだと
@code_warntype func((1, 2, 3))
で太文字 (REPL だと赤文字) がたくさん出ます (とくにout
に関して).::NTuple{M,T}
(where M = N-1) という宣言が有効でないようです.@generated
というのを使うと (anonymous function 以外で) 問題は出なくなります.@code_warntype func_g((1, 2, 3))
:これで「解決」なのですが,私自身
@generated
をまったく理解していないので,できれば使いたくない.こういう難しいのを使わない "普通の" 書き方でうまい方法はないものでしょうか.