問題タブ [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.
list - パターンマッチング x::xs は F# でそれに応じてリストを分割しませんか?
私は F# が初めてで、リストを 2 つに分割するメソッド分割を作成しようとしています。最初の要素が分割する要素の数で、2 番目の要素が list であるタプルを取ります。たとえば、split (2, [1;2;3;4;5;6]) は ([1;2], [3;4;5;6]) を返す必要があります。
これは私がこれまでに持っているものですが、何らかの理由でタプルの2番目の要素を元のリストとしてヘッドなしで返しています。x::xs は自動的に x を先頭要素にし、xs をリストの残りの要素にするので、これは理解できません。これは、再帰呼び出しが前のリストの末尾を取得し、最初の項を切り捨てることを意味します。
scheme - コンスリストのスキームでの乗算
スキームに 2 つのコンス リストを追加するスキーム コードを作成できました。たとえば、list1 - '( p . d) list 2 ' ( ppp . d) cdr と car の概念を使用したカスタム追加関数は、期待どおりに ( pppp . d) を実行できます。
ただし、 p の数に基づいて & の両方を乗算したいので、リスト count を提供するカスタム関数があります。たとえば、list1 -> 1 list2-> 3 の場合
また、2 つのリストのいずれかが空であるかどうかを検出することもできるので、'd.
しかし、本当の問題は掛け算です。list1 - '(pp . d) list2 - '(ppppp . q) 結果が期待される - (2 * 5 = 10 p's) so '(pppppppppp . z)
while loop 、 do while 、 add custom function を使用してみましたが、その方法がわかりません。たぶん、いくつかのガイダンスが私を助けることができます:)
set を使いたくないので、カスタム関数を作成したい! または、プロセスを簡単にするが、この場合に機能する方法で再帰を理解したいもの:)。
functional-programming - []::[]、[]::[]::[] を sml で解釈する
[]::[]SML/NJ でと[]::[]::[]が概念的にどのように解釈されるかをお聞きしたいと思います。
私の考え :
[]::[]エラーが発生するか、空のリストが生成されると思っていましたが、実際にはval it = [[]] : 'a list list.
が生成されることを知った後、それが生成される[]::[]と[[]] : 'a list list思ったが、実際には生成される[]::[]::[][[[]]] : 'a list list list[[],[]] : 'a list list
list - :: がリストでしか機能しないのはなぜですか?
::のすべてのサブクラスに固有でList、すべてのサブクラスで使用できないようにする理由は何Seqですか? 具体例を挙げると:
すべてのシーケンスは順序付けられており、「頭」と「尾」の概念があるのに、なぜコレクション ライブラリの実装者は だけに提供::したのListでしょうか? +:すべてを操作できるようにしたいのに、なぜ使用する必要があるのSeqですか?
編集:私はパフォーマンスの議論を理解しています-私はこの質問をするたびにそれを与えられてきました-しかし、私はそれにほとんど同意しません. ::fromの削除という 1 つのことだけが変更された別のコレクション ライブラリを想像してみてくださいList。何が変わるでしょうか?
- などを使用
+:して、パフォーマンスの高い方法でリストを作成できます。Nil"A" +: "B" +: Nil +:リストのさまざまな部分を抽出するために、エレガントなパターン マッチを使用できます。例えばcase head +: tail => println(head)- のすべてのサブクラスを構築およびパターン マッチングするための統一された方法があり
Seqます。これにより、 で紹介したような微妙なバグをリンターで見つける必要がなくなりますgetTail。
正直なところ、 を使用するよりも、 に固有のメソッドがどのようにList簡単、明確、またはパフォーマンスが向上するかわかりません+:。もしそうなら、 が に::限定される理由はないと思いますList。これを考えると、存在する理由がまったくわかりません::。
scheme - ラケット/スキームの引数の前にコンスを使用する
consのようなペアを構築するためのものであることは知っていますが、ここでafter(cons 2 (cons 3 empty))を使用するコードはわかりません。数字のために構築されていませんか?どのように2つの引数を取ることができますか? それらが 2 つの引数を取ることができる場合、それらをどのように評価しますか? 誰かがコードを翻訳してください。consemptyconscons[(empty? lst) empty]
list - 2 つのリストからリストを作成するためのスキーム コンス
だから、私はSchemeで学校のプロジェクトを持っています(Dr.Racket環境で働いています)。
2 つのリストがあります。1 つは 6 文字以上、もう 1 つは 3 文字です。
これらを次のように組み合わせる必要があります。
これに:
今、私はこれを行う方法について考えています。これには、コンスを使用して文字を「添付」した後、部品に「カット」し、コンスを使用してそれらを元に戻すことが含まれます。
ただし、ここに問題があります。2つのリストを1つに構築する関数を作成しましたが、機能せず、関数定義で使用した名前が表示されます。
コードは次のとおりです。
結果:
私は何を間違えましたか、どうすれば修正できますか?
clojure - clojure: コンスセルなし
ほとんどの Lisp 言語のように、clojure にはコンス セルがないと聞きました。
それは、clojure リストが空のリストで終わらないということですか?
誰かがそれが正確に何を意味するのか説明できますか?