関数型プログラミングの基礎 - クロージャと部分適用 - APIで使用するURLの生成
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT1(関数型プログラミングの基礎)、LESSON 5(クロージャと部分適用)、5.2(例:APIで使用するURLの生成)、クイックチェック 5-2の解答を求めてみる。
コード
sample2.hs
main :: IO ()
main = do
print $ myExampleUrlBuilder "1234"
genHostRequestBuider :: [Char] -> [Char] -> [Char] -> [Char] -> [Char]
genHostRequestBuider host apikey resource id =
host ++ "/" ++
resource ++ "/" ++
id ++ "?token=" ++
apikey
exampleUrlBuilder :: [Char] -> [Char] -> [Char] -> [Char]
exampleUrlBuilder = genHostRequestBuider "http:://example.com"
genApiRequestBuilder :: (t1 -> t2 -> t3 -> t4) -> t1 -> t2 -> t3 -> t4
genApiRequestBuilder hostBuilder apiKey resource = \id -> hostBuilder apiKey resource id
myExampleUrlBuilder :: [Char] -> [Char]
myExampleUrlBuilder = genApiRequestBuilder exampleUrlBuilder "1337hAsk3ll" "book"
入出力結果(Terminal, Zsh)
% runghc sample2.hs
"http:://example.com/book/1234?token=1337hAsk3ll"
%