將以下**儲存到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不改變...