2012-10-21 57 views
2

出於示例的目的,我們假設一切都是整數。另外,我知道編譯器會對這些函數不能解釋每一種情況感到氣憤。可以在OCaml中連接函數嗎?

比方說,我有這兩個功能:

let f1 = function 
    | a -> b;; 

let f2 = function 
    | c -> d;; 

有沒有什麼辦法可以讓做這個功能:通過組建類似於一個風格f1和f2(

| a -> b;; 
    | c -> d;; 

連接2個列表),而不是明確地將它們硬編碼在一起?

+0

我試着回答,但我想這個問題不夠具體。我結束了所有的問題,沒有回答。第一個問題:這是一項家庭作業嗎?第二:涉及哪些類型?什麼是'a'和'c'?如果我假設它們是同一類型的常量,那麼這兩個函數都是局部的,即容易引發異常。這可能是一個提示。 –

+0

1.是 2.假設他們都是整數。 –

+1

@AlexChiou:這是一個功課題嗎?它不喜歡我(有點太奇怪),所以我會更明確地回答這個問題,但我不想撤銷傑弗裏在暗示的情況下所採取的非常謹慎的態度。 – gasche

回答

0

對於作業,我認爲規則是你應該顯示一些你試過的代碼並說出錯的地方。否則,如果不解決問題就很難發表評論。

不過,我認爲事實上,這兩個f1f2有部分可能是一個相當大的暗示,假設我知道你在找什麼(高階功能,可以爲類似f1任意兩個功能做到這一點和f2)。

2
let concat_funs f1 f2 x = 
    try f1 x 
    with Match_failure _ -> f2 x 

它是關聯的,但不可交換。

相關問題