問題タブ [cons]
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.
macros - ラケットのc(a | d)+rマクロ
あらゆる形の形状(c(a | d)+ r xs)を変換するマクロをRacketで記述できるかどうか疑問に思います。ここで、c(a | d)+ rは、car、cdr、caar、 cadr、...など、最初と残りの対応する構成に。
たとえば、このマクロは(caadr'(1 2 3 4 5))を取り、それを(first(first(rest'(1 2 3 4 5))))に変換する必要があります。
Shen(Mark Tarverの新しいプログラミング言語)でのこのようなもの:https ://groups.google.com/group/qilang/browse_thread/thread/131eda1cf60d9094?hl = en
f# - fsharp の fst および 3 タプル
これを機能させる最も良い方法を知っていますか:
fstを書き換えるよりも良い方法があるに違いありません..
更新 パッドのアドバイスの後、以前の 'a*'b を 1 つの構造体にパックするように書き直しました。私のコードは次のようになります。
f# - cons :: F#のシーケンスの演算子?
シーケンスをリストに変換する必要のない、より良いコードはありますか?
list - LISP でのリスト評価 (cons の奇妙な動作)
私は現在LISPで遊んでいます。すべて問題ありませんが、次の問題がわかりません。
私はこの追加操作を持っています:
私はこのように使用します:
ラケットでの結果 は次のとおりです。
しかし、なぜ?cons はリストを返し、myappends は 2 つのリストを追加するため、私の意見では'(1 2 4 5)にする必要があります。誰でも私を助けることができますか?LISP は何をしているのですか?
ios - NSString から const char へ * ギリシャ文字で変換
ギリシャ語を含む NSString を const char に変換しようとしています。文字列をギリシャ語用のUTF-8エンコーディングで変換しようとしていますが、文字をログアウトすると、ジャンクが含まれています。ここで少し助けてください..
recursion - アキュムレータ、conj、および再帰
私は 4clojure.com から 45 の問題を解決しましたが、再帰とアキュムレータを使用していくつかの問題を解決しようとしているときに、繰り返し発生する問題に気付きました。
一部のClojurerが私が得ていないものを「得る」ことを期待して、醜い解決策に終わるために私がしていることをできる限り説明しようとします。
たとえば、問題 34 では、2 つの整数を引数として ( rangeを使用せずに) 関数を作成し、( range を使用せずに) 範囲を作成するよう求めています。簡単に言えば、(... 1 7) を実行すると、(1 2 3 4 5 6) が得られます。
さて、この質問は、この特定の問題を解決することではありません。
再帰とアキュムレータを使用してこれを解決したい場合はどうすればよいですか?
私の思考プロセスは次のようになります。
(fn [xy] )で始まる、2 つの引数を取る関数を作成する必要があります。
再帰する必要があり、リストを追跡する必要があります。アキュムレータを使用するので、追加の引数を取る最初の関数内に 2 番目の関数を記述します。
(fn [xy]
((fn g [xy acc] ...) x y '())
(明らかに、SO で Clojure コードを適切にフォーマットできません!?)
最初の関数は正確に 2 つの整数引数 (私の呼び出しではない) を取る必要があり、確信が持てません: アキュムレータを使用したい場合、作成せずにアキュムレータを使用できますか?ネストされた関数?
次に、 conjしたいのですが、できません:
そのため、最初にシーケンスを取得するために奇妙なことを行い、最終的には次のようになります。
しかし、これはこれを生成します:
これの代わりに:
そのため、追加のフラット化を行うことになり、機能しますが、完全に醜いです。
私はいくつかのことを理解し始めており、場合によっては、よりクロジュレスクな方法で「考え」始めていますが、解決策を書くのに問題があります。
たとえば、ここで私は次のように決めました。
- アキュムレータを使用するには
- yに達するまでxをインクリメントして再帰する
しかし、私は上記の怪物になってしまいます。
この問題を解決する方法はたくさんありますが、繰り返しになりますが、それは私が求めているものではありません。
私が求めているのは、cons/conj を決定し、アキュムレータを使用し、再帰することを決定した後、次のようになる方法です (私が書いたものではありません)。
これの代わりに:
いくつかの問題を解決できるようになり始めたと思いますが、私が作成する傾向がある醜い解決策に少しがっかりしています...
scala - 明示的に呼ばれるcons関数がScalaのIntに対して機能するのはなぜですか?
以下を使用して、Scalaで新しいリストを作成できます。
私の理解では、これは次のように書き直すことができます。
主な理由は::fixtyですが、私が書いた場合:
「値::はIntのメンバーではありません」というメッセージが表示されます。これは、scaladocではIntに::がないためですが、これを次のように変換すると、理由がわかりません。
それは出力として取得して動作します:
scalacがとをIntとは異なるタイプに自動キャスト1しているように見えます。2あれは正しいですか?もしそうなら、なぜそれが起こるのですか、そしてこの奇妙なタイプはどれですか?
lisp - なぜ caddr[(ABC)] = C なのですか?
理想的には LISP で:
しかし、本は答えがC. 誰でも説明できますか?
どうもありがとう。
list - リストの先頭に追加するための `::` と `+:` の違いは何ですか?
List(不変の) リストの前に要素を追加するために指定された 2 つのメソッドがあります。
+:(実装Seq.+:)、および::( でのみ定義List)
+:技術的には、より一般的な型シグネチャを持っています—</p>
—しかし、ドキュメントメッセージによれば単に である必要があるという暗黙的なものを無視するThatとList[B]、署名は同等です。
List.+:とはどう違いList.::ますか?それらが実際に同一である場合+:、具体的な実装に依存することを避けることが好ましいと思いますList。しかし、なぜ別の public メソッドが定義されたのでしょうか? クライアント コードはいつそれを呼び出すのでしょうか?
編集
パターンマッチング用のエクストラクタもありますが、::具体的な方法が気になります。
clojure - clojure cons vs conj with lazy-seq
consがlazy-seqでこのコンテキストで機能するのに、conjが機能しないのはなぜですか?
これは機能します:
これはしません(スタックオーバーフロー例外が発生します):