出於示例的目的,我們假設一切都是整數。另外,我知道編譯器會對這些函數不能解釋每一種情況感到氣憤。可以在OCaml中連接函數嗎?
比方說,我有這兩個功能:
let f1 = function
| a -> b;;
let f2 = function
| c -> d;;
有沒有什麼辦法可以讓做這個功能:通過組建類似於一個風格f1和f2(
| a -> b;;
| c -> d;;
連接2個列表),而不是明確地將它們硬編碼在一起?
出於示例的目的,我們假設一切都是整數。另外,我知道編譯器會對這些函數不能解釋每一種情況感到氣憤。可以在OCaml中連接函數嗎?
比方說,我有這兩個功能:
let f1 = function
| a -> b;;
let f2 = function
| c -> d;;
有沒有什麼辦法可以讓做這個功能:通過組建類似於一個風格f1和f2(
| a -> b;;
| c -> d;;
連接2個列表),而不是明確地將它們硬編碼在一起?
對於作業,我認爲規則是你應該顯示一些你試過的代碼並說出錯的地方。否則,如果不解決問題就很難發表評論。
不過,我認爲事實上,這兩個f1
和f2
有部分可能是一個相當大的暗示,假設我知道你在找什麼(高階功能,可以爲類似f1
任意兩個功能做到這一點和f2
)。
let concat_funs f1 f2 x =
try f1 x
with Match_failure _ -> f2 x
它是關聯的,但不可交換。
我試着回答,但我想這個問題不夠具體。我結束了所有的問題,沒有回答。第一個問題:這是一項家庭作業嗎?第二:涉及哪些類型?什麼是'a'和'c'?如果我假設它們是同一類型的常量,那麼這兩個函數都是局部的,即容易引發異常。這可能是一個提示。 –
1.是 2.假設他們都是整數。 –
@AlexChiou:這是一個功課題嗎?它不喜歡我(有點太奇怪),所以我會更明確地回答這個問題,但我不想撤銷傑弗裏在暗示的情況下所採取的非常謹慎的態度。 – gasche