クリプトールストリーム方程式/同義語/クラス/モジュール
学習参考資料のダウンロード:https://cryptol.net/documentation.html
流れ方程式
-
下図のシフトフィードバックレジスタの場合、説明コードは次のとおりです。
as = [0x3F, 0xE2, 0x65, 0xCA] # new where new = [ a ^ b ^ c | a <- as | b <- drop`{ 1} as | c <- drop`{ 3} as ]
シノニム
-
C言語でのtypedefの定義に似ていますが、より強力でパラメーター化できます。
type Word8 = [8] type CheckedWord = (Word8, Bit) type Point a = { x : [a], y : [a]}
クラス// Cppのクラスは概念ではありません
-
==など、複数のタイプで共有される動作を説明するために使用され、単一のタイプを比較してブール値を返します。
Cryptol> :t (==) (==) : { a} (Eq a) => a -> a -> Bit
モジュール付きのプログラム構造
-
Verilogのモジュールの概念と同様に、ファイルに含めることができるモジュールは1つだけであり、モジュールとファイル名は同じです。
-
ファイル内のコメントされていないコードの最初の行は次のようになります。
module utilities where
-
他のモジュールを使用する場合は、次の定義を使用できます。対応するファイルが現在のディレクトリで検索されます。
import utilities
-
Cppと同様のプライベート変数は、独自のモジュールのデータへのアクセスを防ぎます。
private internalDouble x = x + x exportedDouble = x * 2
説明文書を見ただけでは理解しにくいので、次のステップはコードと併せて見ることです!