17

shapeless (2.0.0) を学習しようとしています。素晴らしいツールのようで、とても楽しみにしていますが、先に進むには問題があります。ドキュメントがまだあまりないので、サンプルとソース コードを調べてみました。ほとんどの例では複数の形状のない概念が使用されており、ソース コードでは 1 つの形状のない型が他の型を使用することが多いため、いわば形状のないウサギの穴に落ちてしまうため、私は苦労しています。shapeless API の重要な機能のリストと、それぞれの機能の簡単な説明があると便利だと思います。私は明らかにそのようなリストを作成する資格がないので、スタック オーバーフローの人間の皆さんにお願いします!

各機能について、次の情報をできるだけ多く含めてください。

  1. 機能の名前とインポート方法。

  2. それが何をするかについての短くて簡単な説明。

  3. なぜこの機能が重要なのですか / なぜ誰かがわざわざそれを使用するのですか?

  4. 形のない、または高度な Scala の概念を可能な限り使用しない単純な例。

API の機能とは、shapeless 2.0 で定義され、インポートして使用できる単一のもの (型、関数、オブジェクトなど)、または密接に結合されたそのようなものの小さなセットを意味します。プログラム。高次ポリモーフィズムや型レベルの再帰などの一般的な概念について言及しているわけではありません。また、回答ごとに 1 つの機能のみを含めてください。おそらく、十分な回答があり、他の十分な数の人もこのリストを使用している場合、回答に対する投票を使用して、さまざまな機能の重要性をランク付けできます.

注: 私はこの機能リストを認識しています。私はそれが素晴らしいと思います、そしてそれは私を大いに助けてくれました. ただし、できることのリストよりも API ドキュメントに似たものを探しています。私は多くの例を理解し、それらからいくつかの機能の目的を推測することができますが、特定の部分につまずいてその機能を理解できないことがよくあります.

4

1 に答える 1

3

HList

HList は、複数の型のオブジェクトを保持できるリストのようなデータ構造です。HList は実際には特性です。特定の HList には、そのコンテンツの型を完全に指定する、より具体的な型があります。HList は不変です。HList 機能をインポートする通常の方法は、

import shapeless._

HList は、タプルではない異種オブジェクトの不変コレクションが必要な場合に役立ちます。

HList は、空の HList である HNil と :: 演算子を使用して構築されます。次の例は、"cat" にカウントされる HList を作成する方法を示しています。

val hl = 1 :: 2 :: "cat" :: HNil

上記の型にhlは、2 つの Int 型と String 型が含まれます。Shapeless には、他の回答の対象となる HLists に対する多くの便利な操作が含まれています。

于 2014-01-02T01:39:39.083 に答える