Git Product home page Git Product logo

ocaml-blockly's People

Contributors

anmatanm avatar carlosperate avatar corydcode avatar daarond avatar drigz avatar duzc2 avatar edauterman avatar espertus avatar furukaw avatar harukamm avatar immortalin avatar jollytoad avatar k-ran avatar kaworru avatar kchadha avatar kenichi-asai avatar marisaleung avatar microsoftsam avatar miguel76 avatar neilfraser avatar nikerabbit avatar picklesrus avatar quachtina96 avatar rachel-fenichel avatar roboerikg avatar seanlip avatar siebrand avatar timdawborn avatar translatewiki avatar trodi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ocaml-blockly's Issues

The same pattern variable is allowed but should be rejected.

(レコードのサポート、ありがとうございます。)
現在、match 文で、レコードのパターンを使うと、パターン変数に同じ変数がデフォルトで入っていますが、異なる変数にしたいです。加えて、ユーザが同じ名前のパターン変数に rename しようとしたら拒否したいです。

レコードを直接置くとエラーになる

スクリーンショット 2019-04-16 19 01 44

レコード定義の型名ブロック(画像の `type a` の `a`)をつかむと、レコードの値のブロックになりますが、それを式(画像の `let a = ` の後ろ)に入れることができません。 一度スコープお砂場に置いてからなら大丈夫です。

パターンお砂場にレコードパターンを置きたい

match文の中のパターンお砂場に、リストやペアのパターンブロックはおくことができますが、レコードパターンブロックについては、「レコード〇〇が定義されていない場所です」のエラーメッセージが出て、おくことができません。(なお、パターンとして、外の世界で、match文のブロックと組むことは、もちろんできます。)

Loading and saving blocks with Web Storage

ユーザが動作する度にWeb Storageかなんかにシリアライズしたブロック全体を保存しておき、開いたときにブロックを復元する。
これの利点は以下の通り。

  • バグ(#11#12 とか)に引っかかって、例外が起きてブロックがマウスから離れなくなったりしても、リロードすれば例外が起きる前の状態に戻れる。
  • バグはどうしてもあるもんなので、バグに引っかかってもリカバーできる機能が必要で、Web Storageへのブロック保存はその機能の一つ。

文字列結合のブロックを可変長にしてはどうか

現在は、文字列結合を行うブロックは、2つの文字列を結合するものに限られていて、3つ以上の文字列を結合したいときには、文字列結合のブロックを入れ子にする必要があります。

そこで、

type ekimei_t = {kanji : string; kana : string; romaji : string; ken : string; shozoku : string}
let hyoji eki = match eki with
  | {kanji = a; kana = b; romaji = c; ken = d; shozoku = e} -> d ^ ":" ^ e ^ "," ^ a ^ "(" ^ b ^ ")"

上のようにekimei_t型の駅情報を文字列にする関数を定義してみたところ次のようになりました。
スクリーンショット 2019-03-29 14 52 29

入れ子が複雑になると可読性?が落ちる気がするので、リスト構造のように可変長ブロックにしてはどうでしょうか。(結合法則の仕組み等の問題が発生するのでしょうか。)

(日本語で失礼しました。)

数字ブロックに負の数が入っているときにコードに括弧をつけたい

スクリーンショット 2019-04-04 22 17 41

整数リテラルと実数リテラルのブロックには負の値を入力できますが、そのブロックをコードに変換したときは括弧で囲みたいです。
括弧がないと、画像の f -2 -2. のように、ブロックで作ったのと違う構造の式になることがあります。

ただ、二項演算子(++.= など)の引数である場合には、演算子の前後にスペースが入っているおかげで括弧がついていなくてもブロックの通りに構文解析されて正常に実行できるようです。個人的にはこの場合も括弧があったほうが分かりやすいかと思います。

Want to regard pattern variables as ordinary variables

match 文でレコードのパターンを使った際、そのパターンの矢印の右側ではパターン変数を普通の変数としてドラッグして使えるようにしたいです。現在は、x :: xs のパターンなら x や xs をドラッグできますが、レコードのパターン変数はドラッグできないようです。加えて、これらのパターン変数がスコープお砂場にも現れて欲しいです。

Crash when dragging variable blocks into workbenches

スコープお砂場にchocolateを戻そうとしたらエラーになり、戻そうとしたchocolateが離れなくなりました。

スクリーンショット 2019-03-16 15 50 40

これもchocolateと同じような現象になりました。。

スクリーンショット 2019-03-16 17 13 36

(tさんより)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.