簡體   English   中英

以函數作為參數定義函數

[英]Defining a function with a function as an argument

我目前正在嘗試定義類型為('a->'a)->'a->'a的函數,該函數接受類型為'a->'a的函數和類型為'a的參數,並兩次調用該函數論據。 我是OCaml的新手,但我確實知道如何定義函數,但是我對試錯法或Google嘗試獲取函數以將函數作為參數然后兩次應用該函數並不滿意。

任何提示或指示,將不勝感激,在此先感謝。

編輯:感謝下面的傑弗里,我的問題現在已經解決。

令f4 ga = g(ga);;

val f4:('a->'a)->'a->'a =

OCaml會推斷類型,因此,如果將參數用作函數,則會推斷它是一個函數。 這是一個例子:

# let f g = g 8 + g 10;;
val f : (int -> int) -> int = <fun>
# (~-);;
- : int -> int = <fun>
# f (~-);;
- : int = -18

要理解該示例,請注意(~-)是普通的整數求反運算符。

更新 :有關您更復雜問題的提示。 您需要測試 n的值。 也許if語句會起作用? 第二個提示:如果使用遞歸,則不需要使用循環。 如果要使用循環,請不要使用遞歸。 (我個人建議使用遞歸,這就像在學習鋼琴時彈奏音階。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM