FINEARCHS

Results 151 comments of FINEARCHS

- 配列やオブジェクト、連想配列をキーにする場合はdeep-equalでマッチ判定する? - 関数がキーになった場合どうマッチする? - JSON.parseの引数にされたら弾く?

> 参照が一致するかでも良さそうな? 参照一致の連想配列は用途が考えづらいと思う deep-equalであればコストを差し置いても使いたい場面がいくらかある

個人的には普通の比較もdeep-equalに変えたい 参照一致の使い道がわからん

``` let a=[] a[0]=a Json:stringify(a) //Maximum stack size exceeded ``` これみたいなやつですね 参照一致ならdeep-equalでも一致なのでdeep-equalでの比較の前に参照の比較を挟んでおくとよさそう?

``` function deepEqual(a: Value, b: Value) { if (a.type !== b.type) return false; if (a.value === b.value) return true; if (['arr', 'obj', 'fn'].includes(a.type)) 各子要素を比較; else return false; } ``` 比較自体はこれでなんとかなる気がしますがそういう話ではなく?

`somedic[someobj]`が面倒になりそうという問題はありますね Ison:stringifyを用意して文字列化してからMapに突っ込むのが楽そう?

> https://github.com/aiscript-dev/aiscript/commit/e91af8de66d2e350b0a3405b6123eb91bb8d499c 何故か`equal([1], [2])`がtrueになるみたいです…何で…?

> 専用構文の場合ユーザー定義のオブジェクト等でややこしそう? すみません、もう少し詳しくお願いします > 引数に変更されるオブジェクトを入れる場合も対応できるように、Rubyっぽく識別子にわかりやすく記号付けるのも良さそう? ユーザーの関数定義では`!`が末尾についた時だけ参照渡しが使え、std関数等もそれに倣う、みたいな感じですか?

パーサー(コンパイラ?)がバイトコードを生成してインタープリタ?がそれを読み取って実行する感じですか?(今で言うASTをバイト列に置き換える感じ)

>レジスタ割当については、各レジスタが使用フラグを持って、スコープを抜けたとかで解放していけばいいのかなと思いました ``` eval { var a = 'hoge' @func(){ return a} } func() ``` みたいな状況だと`a`が解放されているのに`func`にアクセスされてしまうという問題が起きそう?