Skip to Main Content
Mathematica 錦囊妙計
book

Mathematica 錦囊妙計

by Sal Mangano
April 2014
Beginner to intermediate content levelBeginner to intermediate
830 pages
15h 21m
Chinese
GoTop Information, Inc.
Content preview from Mathematica 錦囊妙計
2.15 實作柯里化(Currying)功能
|
75
前文範例提供的
Curry
函數工作原理如下:建立一個表示式以
ValueQ
指令判斷指定函數
(第一個引數)搭配指定的參數(第二個引數)是否可求值,如果可以便直接求值,否
則便回傳柯里化版本的純函數。這個技巧重點在於,此表示式必須保留函數暫緩執行格
式,直到
ValueQ
通過並進行求值為止,然而純函數部分必須維持柯里化格式,因此我
們以
z
作為第二輪
ReplaceAll
/.
)的預留位置,以柯里化格式取代之。
我承認這個方式有些技巧性,但如果肯動手嘗試的話,你會更加了解 Mathematica 在發
展函數新行為的強大能力。要了解
Curry
函數的原理,可以先不要解開暫緩執行格式
Hold
),並於進行求值之前檢查每一步的結果。
Hold
格式解開時,
ValueQ[f[10]]
會回傳 false,因此回傳
f[10]
的柯里化格式純函
數,並等待後續的引數序列
##1
當以上的
Hold
格式解開時,
ValueQ
仍然回傳 false,因為函數
f
需要有三個引數才能求
值,因此我們可進一步得到
f[10][20]
的柯里化格式純函數,仍繼續等待後續的引數序
##1
最後,當提供第三個引數時,
f[10,20,30]
可進行求值,
ValueQ
終於回傳
true
,此時便
回傳表示式
f[10,20,30]
以下實作一個有用的附加功能:在不提供第一個引數的情況下建立自我柯里化的函數。
[Page-076]
ch02.indd 75 2014/4/2 上午 03:32:47
76
|
第二章
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Ubuntu for Non-Geeks, 4th Edition

Ubuntu for Non-Geeks, 4th Edition

Rickford Grant, Phil Bull

Publisher Resources

ISBN: 9789863470106