0

次のメイン関数を使用して、一連の図を作成しようとしています。

main = mainWith [("here0", myDiagram), ("here1", myDiagram)]

次のエラーが表示されます。

No diagram selected.
Available diagrams:
  here0 here1

このエラーが何を意味するのか分かりますか?


詳細:

私の「myDiagram」にはタイプがあります:

myDiagram :: Diagram B

メイン関数が代わりに次の場合、プログラムは正しく動作します。

main = mainWith myDiagram

編集:

コメントありがとうございます。リンクされたコマンドライン チュートリアルを見て、可能な限り厳密に従おうとしましたが (-s オプションの指定を含む)、同じ問題が発生しています。これがまさに私がやったことです:

ファイル「Animation.hs」を作成しました:

{-# LANGUAGE NoMonomorphismRestriction #-}

import Diagrams.Prelude 
import Diagrams.Backend.SVG.CmdLine

main = mainWith [("myBlue", myBlue), ("myGreen", myGreen)]

myBlue :: Diagram B
myBlue = circle 1 # lw none # fc blue

myGreen :: Diagram B
myGreen = circle 1 # lw none # fc green

次の方法でコンパイルしました:

ghc --make Animation.hs

レンダリングできるダイアグラムを次のように表示しました。

./Animation --list

期待どおり、次のものが返されました。

Available diagrams:
  myBlue myGreen

しかし最後に、次の方法で .svg の 1 つを生成しようとしています。

./Animation -o out.svg -w 400 -s myBlue

戻ってきた:

No diagram selected.
Available diagrams:
  myBlue myGreen

欠けているが見つからないように見える単純なものがあるに違いないと感じています-リストされている利用可能な図を「-s myBlue」で指定しています。

4

1 に答える 1

2

この方法で使用する場合は、コマンド ライン オプションを使用mainWithしてレンダリングするダイアグラムを選択する必要があります。-S公式のコマンドラインチュートリアルを引用:

名前付きのダイアグラムが複数ある場合は、mainWith を使用して、特定のダイアグラムを名前で選択できるインターフェースを提供できます。

> -- Multiple
>
> d1, d2, d3 :: Diagram SVG V2 Double
> ...
>
> main = mainWith [("First", d1),("Second", d2),("Third", d3)]

--list オプションはレンダリング可能なダイアグラムをリストするだけで、 -S selection オプションは名前を取り、関連するダイアグラムを標準オプションでレンダリングします。

$ ./Multiple --list
Available diagrams:
  First Second Third
$ ./Multiple -o d1.svg -w 100 -S First

使用されるオプションは-Sであり-s、チュートリアルとは異なります (2016/10/25 現在)。この問題によりオプションが変更されましたが、変更はまだチュートリアルに反映されていません (ただし、修正パッチが受け入れられているため、すぐに修正されるはずです)。ただし、プログラムのヘルプ メッセージは正しいです。

$ stack --resolver=lts-7.2 exec -- runhaskell Dag.hs -?
Dag.hs

Usage: Dag.hs [-?|--help] [-w|--width WIDTH] [-h|--height HEIGHT]
              [-o|--output OUTPUT] [-l|--loop] [-s|--src ARG]
              [-i|--interval INTERVAL] [-p|--pretty] [-S|--selection NAME]
              [-L|--list]
  Command-line diagram generation.

Available options:
  -?,--help                Show this help text
  -w,--width WIDTH         Desired WIDTH of the output image
  -h,--height HEIGHT       Desired HEIGHT of the output image
  -o,--output OUTPUT       OUTPUT file
  -l,--loop                Run in a self-recompiling loop
  -s,--src ARG             Source file to watch
  -i,--interval INTERVAL   When running in a loop, check for changes every
                           INTERVAL seconds.
  -p,--pretty              Pretty print the SVG output
  -S,--selection NAME      NAME of the diagram to render
  -L,--list                List all available diagrams
于 2016-10-15T17:19:52.500 に答える