網頁

2018年6月25日 星期一

我的西貢時光-越南滴滴壺

越南壺何時、何人發明已不可考,一般相信是1859年起法國殖民越南時期, 在越南用越南壺放入焦黑出油的越式咖啡粉,濾出後的黑苦咖啡 + 煉奶 攪勻後飲用 。


越南咖啡之所以別具風情,在於它的沖泡過程完全不經電力或機械,只需一個簡易的滴滴壺就能製作出道地的越南咖啡。滴滴壺的好處是一次一杯,比例與時間容易控制,攜帶、收納、清洗非常方便;缺點是篩孔較大,滴餾時難免會有微量的咖啡渣飄浮其中。越式滴滴壺分成鋁製與不鏽鋼製兩種,配件包含:篩子、壺身、蓋子三部分。

越南當地較為盛行的咖啡是咖啡加入煉乳的,因為傳統越南咖啡的味道相當苦澀,所以越南人發明了加入煉乳的飲用方式,聽說很多越南人不管早中晚都在喝咖啡,只要有這簡單的滴壺就能夠悠閒地享用咖啡。

首先準備:
A.中度或是深度烘培,中等顆粒咖啡粉,喝起來會更道地,越南咖啡的口味是非常重的。您也可自行研磨咖啡豆,記得磨成中等粗細,避免滴餾時殘留太多咖啡渣。
B.越式滴滴壺(我使用不鏽鋼製、直徑6 cm的最小尺寸)。
C.煉乳(鮮奶、奶精都可以)。
D.正方體冰塊,咖啡在先熱後冷的交替作用下就能散發極致的風味。
E.一高一矮透明玻璃杯。
F.90℃的熱水 (煮沸的礦泉水更好)。


 沖泡過程如下:
1.放入1匙的咖啡粉 (約10g~12g),輕拍壺身使咖啡粉均勻分佈。

2.注入少許熱水"悶蒸" (約20ml),等30秒左右讓咖啡粉充分吸水膨脹。
※註:"悶蒸"是製作手泡咖啡過程中十分重要的一個環節。好的悶蒸能夠使咖啡粉充分浸潤,刺激咖啡活性,水量就控制在咖啡粉的等重至2倍水量即可。

3.把篩子壓板往下壓實 (不可太緊或太鬆,鬆或緊的力道要多做幾次才能掌握),再注入5、6分滿的熱水 (約50、60ml),蓋上蓋子保溫。理想情況下,咖啡會在5、6分鐘內滴完。這個過程很關鍵,若滴得太快或太慢,表示水粉比例、篩子鬆緊或濾泡溫度出了問題,可能導致咖啡太淡、偏苦、或提早變冷  (要多練習幾次吧)。

4.在高的透明玻璃杯放滿冰塊與煉乳,然後將滴滴壺的蓋子翻過來盛著滴滴壺 (咖啡就不會滴出來),再把矮玻璃杯裡的咖啡倒入高玻璃杯攪拌,最後再等個30秒讓咖啡、煉乳與冰塊徹底融合,即可享用別具風味的越南咖啡。


2018年6月4日 星期一

LISP Programming 1062_ex9

http://erdos.csie.ncnu.edu.tw/~klim/scheme/lisp-1062.html
exercise 9: enumerating tuples
•Define a procedure, (enum-tuples list-1 list-2 .... list-k) which will
generate a list of k-tuples. The tuples contains all combinations of
elements from each list.
$ scheme48
> ,load ex9-enum-tuples.scm
> 
> (enum-tuples)
()
> (enum-tuples '(x y z))
((x) (y) (z))
> (enum-tuples '(a b c) '(hello world))
((a hello) (b hello) (c hello) (a world) (b world) (c world))
> (enum-tuples '(1 2) '(h i j k))
((1 h) (2 h) (1 i) (2 i) (1 j) (2 j) (1 k) (2 k))
> (enum-tuples '(hello ohio) '(101 39 11) '(good fine))  
((hello 101 good) (ohio 101 good) (hello 39 good) (ohio 39 good)
(hello 11 good) (ohio 11 good) (hello 101 fine) (ohio 101 fine)
(hello 39 fine) (ohio 39 fine) (hello 11 fine) (ohio 11 fine))
> ,exit
$
解答:
;exer9 enumerating tuples
(define proc-list
    (lambda (lst f)
        (cond
            ((null? lst) '())
            (else
            (append (f (car lst)) (proc-list (cdr lst) f)))))
) ;proc-list END
(define combine
  (lambda (list1 list2)
    (proc-list list1 (lambda (x)
                     (map (lambda (y) (list x y)) list2))))
) ;combine END
(define enum-tuples
  (lambda (x-lst . y-lst*)
    (cond
      ((null? y-lst*) (map list x-lst)) ;case1: (enum-tuples '(x y z))
      ((null? (cdr y-lst*)) (combine x-lst (car y-lst*)))
      (else
          (proc-list x-lst (lambda (x)
                           (map (lambda (y) (cons x y))
                                (apply enum-tuples y-lst*)))))))
) ;enum-tuples END
執行結果: