Cryptol 03 函式定義

2021-10-13 19:05:22 字數 2014 閱讀 5532

將以下**儲存到test.cry檔案中,並裝載該檔案;

:l c:\users\vikingswu\desktop\test.cry

increment :[8

]->[8

]increment x = x+

1

在命令列中測試函式,注意資料位寬

main> increment 3

0x04

main> increment 255

0x00

main> increment 912

[error] at :1

:1--1

:14:unsolvable constraint:

8>=

10 arising from

use of literal or demoted expression

at :1

:11--1

:14

引數可以加括號,也可以不加括號,但負數必須加;

increment(3

)increment(-

2)

可以用let,替代load,定義一些簡單的函式;

cryptol> let r =

cryptol> r.a

true

where的使用:

twoplusxy :([

8],[

8])-

>[8

]twoplusxy (x, y)=2

+ xy

where xy = x * y //注意前面一定是有個tab的

main>

twoplusxy(1

,2)//這裡一定要有括號,因為是元組型別

0x04

匿名函式的定義,或者稱之為λ-expressions;

cryptol> f 8 where f x = x+19

cryptol>

(\x -

> x+1)

8//這個的定義方法和上面的含義一致

9

zero在函式中的應用;

all : (fin n) => (a -> bit) -> [n]a -> bit

cryptol> all eqten [10,

10,10,

10] where eqten x = x ==

10true

cryptol> all eqten [10,

10,10,

5] where eqten x = x ==

10false

遞迴函式,目前用不上;

迭代生成序列,在序列密碼中用得上:

ys =

[i] # [ f (x, y)

| x <

- xs

| y <

- ys

]

實際表示為:

y0= i

y1=f

(x1, i)

y2=f

(x2, y1)

y3=f

(x3, y2)..

.yn=

f(xn, yn−1

)

while迴圈:

-- c-like pseudo-code!

y = i;

// running value, start with i

idx =0;

// walk through the xs "array" using idx

while

(idx < length (xs)

)return y;

python學習03 函式定義與呼叫

1.函式定義 格式 1 無引數 def fun1 print hello 2 有引數 def fun2 a,b print a b 定義函式時,可以有多個形式引數 2.函式呼叫 1中已經定義好了函式,呼叫函式直接寫函式名,有引數的要傳引數。呼叫fun1 fun1 呼叫fun2 fun2 1,3 3....

03 內聯函式

產生原因 c 語言中有巨集函式的概念。巨集函式的特點是內嵌到呼叫 中去,避免了函式呼叫的開銷。但是由於巨集函式的處理發生在預處理階段,缺失了語法檢測和有可能帶來的語意差 錯。優缺點 巨集函式普通函式 優點內嵌 闢免壓棧與出棧的開銷。高度抽象,避免重複開發,型別檢查 缺點 替換,易使生成 體積變大,易...

03 內建函式

day 3內建函式 map它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的object並返回。格式 map function,iterable,第乙個引數接受乙個函式名,後面的引數接受乙個或多個可迭代的序列,返回的是乙個集合。注意,map不改變...