問題タブ [j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
function - この関数型言語機能を何と呼びますか?
わかりました、恥ずかしいですが、説明が必要なコードを投稿しました。具体的には、最初に絶対値と減算を連鎖させ、次に並べ替えに取り組みますが、これらの関数「動詞」を結合できる「副詞」が存在するため、パラメーターと引数についてまったく言及する必要はありません。
この種の引数のない関数構成をサポートする (非 APL タイプの) 言語は何ですか (モナド/ダイアドとランクの概念に強く結びついている漠然とした考えを持っていますが、特に理解しやすいものを得るのは難しいですウィキペディアを読んだだけの画像) そして、この概念を何と呼びますか?
j - J@期待どおりに機能しない
私はJ言語を習得しようとし始めたばかりで、次のことに混乱しています。
@のドキュメントにある場合、「xu@vy↔uxvy」と表示されます。
品詞を別の品詞と間違えているだけだと思いますが、理解できません
また、名前がどのような種類のスピーチであるかをどのように見分けることができますか?
operators - Jのすべての演算子のリストはどこにありますか
私は J を学ぼうとしていますが、私が直面している大きな問題の 1 つは、すべての定義済み演算子が何であるか、またはそれらをどこで見つけることができるかがわからないことです。| を理解するのに時間がかかりすぎました。剰余関数(二項式の場合)の両方ですが、単項式を使用すると、絶対値または大きさが得られます。J がデフォルトで定義するすべての演算子のリストがどこにあるか知っている人はいますか?
functional-programming - この J 関数が実行されていないのはなぜですか?
J を学習しようとしていますが、使用している本には、これがモナド関数を定義する適切な方法であると書かれています
だから私はこのフォーマットに従って折りたたみコードを書きました。入力で呼び出そうとすると構文エラーがスローされる理由を教えてください。 p を呼び出すだけでは 3 が返されます
tacit-programming - J/K/APLを学ぶ
私は 3 つすべてが関連していることを知っています。J で書かれたProject Eulerの問題に対するかなりの数の回答と、K で書かれたいくつかの回答を見てきました。それを学ぶための材料を手に入れることについて?
refactoring - Jでこれをリファクタリングする方法は?
プロジェクトオイラー#1に対する私の初心者向けソリューション
これはリファクタリングして関数に変換できることを知っています。その方法がわかりません。すべてのラボを読んで学習する必要があります。
refactoring - これをJでリファクタリングする方法は?
Project Euler #1 ソリューションの別のアプローチを次に示します。
それをリファクタリングする方法は?
j - Jで半分の関数を書き直す方法は?
上記の関数は、[0,4] のすべての整数の半分を計算します。ここで、楽しみのために -: 関数を書き直したいとしましょう。これまでの私の最良の推測は
しかし、それはそれをカットしていないようです。どのようにしますか?
j - Jコードを読むための最良の戦略
私はここ数ヶ月Jを使用していますが、なじみのないコードを読むこと(たとえば、自分で書いたものではないこと)は、特に暗黙の中で、言語の最も難しい側面の1つであることがわかりました。しばらくして、私はこの戦略を思いつきました:
1)コードセグメントをWord文書にコピーします
2)(1)から各演算子を取り出し、垂直方向に読み取れるように別々の行に配置します
3)各演算子を語彙ページの口頭での説明に置き換えます
4)J構文から英語の文法への大まかな翻訳を行う
5)翻訳を使用して、概念的に関連するコンポーネントを識別し、それらを改行で区切ります
6)(5)の各コンポーネントが何をすることになっているのかを、わかりやすい英語の散文で説明します。
7)(6)に基づいて、プログラム全体が実行することになっていることの説明を書きます。
8)(1)のコードが(7)の設計コンセプトを表していると言える理由を説明してください。
このプロセスから多くのことを学びますが、特に誰かがこれまでに出会ったことのない概念を使用してプログラムを設計した場合は、かなり困難で時間がかかることがわかります。だから私は疑問に思います:Jコミュニティの他の人々はあいまいなコードを理解するための好きな方法を持っていますか?もしそうなら、これらの方法の長所と短所は何ですか?
編集:
分解する必要がある種類のコードの例は次のとおりです。
私はこれを自分で書いたので、数値入力を受け取り、それを3進配列として再解釈し、結果を2進数の数値の表現として解釈します。(例:binconv 5 =(3 ^ 1)+ 2 *(3 ^ 0)-> 1 2->(2 ^ 1)+ 2 *(2 ^ 0)= 4.)しかし、これがそれが行うことであると理解することは、重要な演習になるでしょう。
algorithm - J: バブルソート暗黙実装における自己参照
私は J の初心者なので、この言語を使用して簡単なタスクを解決することにしました。特に、バブルソート アルゴリズムの実装です。関数型言語でこの種の問題を解決するのは慣用的ではないことを私は知っています.Cのような命令型言語では、宣言型言語で変更されたリストを構築するのではなく、配列要素の転置を使用して自然に解決されるためです。ただし、これは私が書いたコードです:
ステートメントの構造は次のとおりです。
それを配列に適用しましょう:
私を混乱させるのは$:
、最も外側の括弧内のステートメントを参照することです。ヘルプは次のように述べています。
$:
それを含む最長の動詞を示します。
別の本(~ 300 KiB) には次 のように書かれています。
上記のフレーズのプラスや 時間を表す+ や * などの記号は動詞と呼ばれ、機能を表します。J 句に複数の動詞が含まれる場合があります。その場合、単純な英語の文のように、 を左から右に読むことで構成され ます。
4+6%2
4
6
2
()
最も外側の sを省略してコード スニペットを書き直してみましょう。
結果は同じです。なぜこれが機能するのか、なぜ only が最長の動詞として扱われるのか、式全体ではなく、 だけではないのか、説明でき((<./@(2&{.)), $:@((>./@(2&{.)),2&}.)) ^: (1<#)
ません$:
でし((<./@(2&{.)), $:@((>./@(2&{.)),2&}.)) ^: (1<#) ^: #
た(<./@(2&{.)), $:@((>./@(2&{.)),2&}.)
。動詞としての文 (最初のスニペット)。おそらく、1 つの接続詞によって制限される動詞の長さには、何らかの制限があります。((<./@(2&{.)), $:@((>./@(2&{.)),2&}.)) ^: (1<#)
#
次のコードを見てください (ここから):
factorial
within 式は、関数全体、つまり(* factorial@<:) ^: (1&<)
.
この例に従って、代わりに関数名を使用しました$:
:
関数全体を参照することを期待bubblesort
していましたが、結果が正しいため、そうではないようです。
また、他の実装がある場合は、少しリファクタリングしたものでも見てみたいと思います。
ありがとう。