idris

    3

    2答えて

    私はIdrisにできるだけ多くのシステムF(多型ラムダ計算)を実装しようとしています。私は今、私は一例で実証したい問題に直面している:あなたが見ることができるように、任意の2つのFoo値が等しい data Foo = Bar Nat Eq Foo where (Bar _) == (Bar _) = True data Baz: Foo -> Type where Quux: (n:

    1

    1答えて

    私はEratosthenes篩の定義をIdrisに翻訳するのに苦労しています。ここでの機能は、これまでのところです: %default total eratos : Nat -> (l : List Nat) -> { auto ok: NonEmpty l } -> List Nat eratos limit (prime :: rest) = if prime * prime

    0

    1答えて

    私はidrisで簡単なことを証明しようとしていますが、私は悲惨に失敗しています。ここに私のコードです module MyReverse %hide reverse %default total reverse : List a -> List a reverse [] = [] reverse (x :: xs) = reverse xs ++ [x] listEmptyAppen

    4

    1答えて

    Idrisの標準ライブラリ(またはサードパーティのライブラリ)に、別のプログラムにシェルするためのモジュールがありますか?私はPythonのsubprocessとHaskellのSystem.Processのようなモジュールについて考えています。 理想的には、私はプロセス(プログラムのstdinへの書き込み、stdoutからの読み込みなど)とプログラム的にやり取りしたいと思います。

    4

    1答えて

    idrisには、UniqueTypeという名前のユニバースがあり、そのタイプの値は1回しか使用できません。私が知る限り、これを使用して高性能コードを書くことができます。 は、しかし、値が一度だけ使用することができるという事実は、通常はあまりにも限られているので、それを消費するのではなく、値を借りする方法があります: data Borrowed : UniqueType -> BorrowedTyp

    4

    1答えて

    だから私はエラボレータ反射(https://eb.host.cs.st-andrews.ac.uk/drafts/elab-reflection.pdf)にこの論文を読んで、私は(セクション5.2で見つかった)この戦術アウトこれを試してみたかったことを決めた。 mush : Elab() mush = do attack x <- gensym "x" intr

    3

    1答えて

    は、私はこのコードで困惑した非常に少なくする必要があるで data DataStore : Type -> Type where MkData : (size : Nat) -> (items : Vect size schema) -> DataStore schema 私はschemaは未定義ているように見えるので、それがコンパイルされないかもしれない

    2

    1答えて

    私は、joinがflattenとmuとして知られていることをIdrisのドキュメントで気付いた。 Idris> :doc join Prelude.Monad.join : Monad m => m (m a) -> m a Also called flatten or mu The function is Total IIRC、mu(又はμ)は、再帰データ型のためのバ

    3

    1答えて

    少しのIdrisとそのエフェクトのチュートリアルの例を演奏した後、私は最終的にどのように連鎖するのかを考え出しました。鎖が正しい単語であるかどうかはわかりませんが、基本的には別の意味で1つの効果が実装されていることを意味します。 この例では、Lowerと呼ぶエフェクトがあります。直接IOを呼び出します。それから私はHigherと呼ぶEffectを持っています。私は、IOを直接呼び出すのではなく、L