Download as pdf or txt
Download as pdf or txt
You are on page 1of 43

Functional Programming in JavaScript

How to improve your JavaScript


programs using functional techniques
First Edition Luis Atencio
Visit to download the full and correct content document:
https://textbookfull.com/product/functional-programming-in-javascript-how-to-improve-
your-javascript-programs-using-functional-techniques-first-edition-luis-atencio/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Functional Programming in JavaScript How to improve


your JavaScript programs using functional techniques 1
edition Edition Luis Atencio

https://textbookfull.com/product/functional-programming-in-
javascript-how-to-improve-your-javascript-programs-using-
functional-techniques-1-edition-edition-luis-atencio/

Beginning Functional JavaScript. Functional Programming


with JavaScript using EcmaScript 6 1st Edition Anto
Aravinth

https://textbookfull.com/product/beginning-functional-javascript-
functional-programming-with-javascript-using-ecmascript-6-1st-
edition-anto-aravinth/

Beginning Functional JavaScript: Functional Programming


with JavaScript Using EcmaScript 6 1st Edition Anto
Aravinth

https://textbookfull.com/product/beginning-functional-javascript-
functional-programming-with-javascript-using-ecmascript-6-1st-
edition-anto-aravinth-2/

The Joy of JavaScript 1st Edition Luis Atencio

https://textbookfull.com/product/the-joy-of-javascript-1st-
edition-luis-atencio/
Beginning Functional JavaScript: Uncover the Concepts
of Functional Programming with EcmaScript 8 2nd Edition
Srikanth Machiraju

https://textbookfull.com/product/beginning-functional-javascript-
uncover-the-concepts-of-functional-programming-with-
ecmascript-8-2nd-edition-srikanth-machiraju/

JavaScript Learn JavaScript in 24 Hours or Less A


Beginner s Guide To Learning JavaScript Programming Now
JavaScript JavaScript Programming 1st Edition Robert
Dwight.
https://textbookfull.com/product/javascript-learn-javascript-
in-24-hours-or-less-a-beginner-s-guide-to-learning-javascript-
programming-now-javascript-javascript-programming-1st-edition-
robert-dwight/

The Joy of JavaScript 1st Edition Atencio

https://textbookfull.com/product/the-joy-of-javascript-1st-
edition-atencio/

Head First JavaScript Programming, 2nd Edition: A


Learner’s Guide to Modern JavaScript Eric Freeman

https://textbookfull.com/product/head-first-javascript-
programming-2nd-edition-a-learners-guide-to-modern-javascript-
eric-freeman/

Head First JavaScript Programming, 2nd Edition: A


Learner’s Guide to Modern JavaScript Eric Freeman

https://textbookfull.com/product/head-first-javascript-
programming-2nd-edition-a-learners-guide-to-modern-javascript-
eric-freeman-2/
Functional Programming in JavaScript
Functional
Programming
in JavaScript
LUIS ATENCIO

MANNING
SHELTER ISLAND
For online information and ordering of this and other Manning books, please visit
www.manning.com. The publisher offers discounts on this book when ordered in quantity.
For more information, please contact
Special Sales Department
Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
Email: orders@manning.com

©2016 by Manning Publications Co. All rights reserved.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in


any form or by means electronic, mechanical, photocopying, or otherwise, without prior written
permission of the publisher.

Many of the designations used by manufacturers and sellers to distinguish their products are
claimed as trademarks. Where those designations appear in the book, and Manning
Publications was aware of a trademark claim, the designations have been printed in initial caps
or all caps.

Recognizing the importance of preserving what has been written, it is Manning’s policy to have
the books we publish printed on acid-free paper, and we exert our best efforts to that end.
Recognizing also our responsibility to conserve the resources of our planet, Manning books
are printed on paper that is at least 15 percent recycled and processed without the use of
elemental chlorine.

Manning Publications Co. Development editor: Marina Michaels


20 Baldwin Road Technical development editor: Dean Iverson
PO Box 761 Review editor: Aleksandar Dragosavljevic
Shelter Island, NY 11964 Project editor: Tiffany Taylor
Copy editor: Tiffany Taylor
Proofreader: Katie Tennant
Technical proofreader: Daniel Lamb
Typesetter: Dennis Dalinnik
Cover designer: Leslie Haimes

ISBN: 9781617292828
Printed in the United States of America
1 2 3 4 5 6 7 8 9 10 – EBM – 21 20 19 18 17 16
To my wonderful wife, Ana.
Thank you for your unconditional support
and for being the source of passion and inspiration in my life.
brief contents
PART 1 THINK FUNCTIONALLY ..................................................1
1 ■ Becoming functional 3
2 ■ Higher-order JavaScript 23

PART 2 GET FUNCTIONAL........................................................55


3 ■ Few data structures, many operations 57
4 ■ Toward modular, reusable code 84
5 ■ Design patterns against complexity 117

PART 3 ENHANCING YOUR FUNCTIONAL SKILLS ......................151


6 ■ Bulletproofing your code 153
7 ■ Functional optimizations 180
8 ■ Managing asynchronous events and data 205

vii
contents
preface xv
acknowledgments xvii
about this book xix

PART 1 THINK FUNCTIONALLY .......................................1

1 Becoming functional
1.1
3
Can functional programming help? 5
1.2 What is functional programming? 5
Functional programming is declarative 7 Pure functions and

the problem with side effects 9 Referential transparency and


substitutability 13 Preserving immutable data 15


1.3 Benefits of functional programming 16


Encouraging the decomposition of complex tasks 16
Processing data using fluent chains 18 Reacting to the

complexity of asynchronous applications 19


1.4 Summary 22

ix
x CONTENTS

2 Higher-order JavaScript 23
2.1 Why JavaScript? 24
2.2 Functional vs. object-oriented programming 24
Managing the state of JavaScript objects 31 Treating objects ■

as values 32 Deep-freezing moving parts 34 Navigating


■ ■

and modifying object graphs with lenses 37


2.3 Functions 38
Functions as first-class citizens 39 Higher-order functions
■ 40
Types of function invocation 43 Function methods 44

2.4 Closures and scopes 45


Problems with the global scope 47 JavaScript’s function

scope 48 A pseudo-block scope 49 Practical applications


■ ■

of closures 50
2.5 Summary 53

PART 2 GET FUNCTIONAL ............................................55

3 Few data structures, many operations 57


3.1 Understanding your application’s control flow 58
3.2 Method chaining 59
3.3 Function chaining 60
Understanding lambda expressions 61 Transforming data ■

with _.map 62 Gathering results with _.reduce 65


Removing unwanted elements with _.filter 68


3.4 Reasoning about your code 70
Declarative and lazy function chains 71 ■
SQL-like data:
functions as data 75
3.5 Learning to think recursively 77
What is recursion? 77 Learning to think recursively

77
Recursively defined data structures 79
3.6 Summary 83

4 Toward modular, reusable code 84


4.1 Method chains vs. function pipelines 85
Chaining methods together 86 ■
Arranging functions
in a pipeline 87
CONTENTS xi

4.2 Requirements for compatible functions 88


Type-compatible functions 88 ■ Functions and arity:
the case for tuples 89
4.3 Curried function evaluation 92
Emulating function factories 95 ■
Implementing reusable
function templates 97
4.4 Partial application and parameter binding 98
Extending the core language 100 ■
Binding into
delayed functions 101
4.5 Composing function pipelines 102
Understanding composition with HTML widgets 102
Functional composition: separating description from
evaluation 104 Composition with functional libraries 107

Coping with pure and impure code 109 Introducing point-free


programming 111
4.6 Managing control flow with functional combinators 112
Identity (I-combinator) 112 Tap (K-combinator) 113

Alternation (OR-combinator) 113 Sequence (S-combinator) 114


Fork (join) combinator 115


4.7 Summary 116

5 Design patterns against complexity 117


5.1 Shortfalls of imperative error handling 118
Error handling with try-catch 118 Reasons not to throw

exceptions in functional programs 119 Problems with ■

null-checking 121
5.2 Building a better solution: functors 121
Wrapping unsafe values 122 ■ Functors explained 124
5.3 Functional error handling using monads 127
Monads: from control flow to data flow 128 Error handling with

Maybe and Either monads 132 Interacting with external


resources using the IO monad 141


5.4 Monadic chains and compositions 144
5.5 Summary 150
xii CONTENTS

PART 3 ENHANCING YOUR FUNCTIONAL SKILLS ..........151

6 Bulletproofing your code 153


6.1 Functional programming’s influence on unit tests 154
6.2 Challenges of testing imperative programs 155
Difficulty identifying and decomposing tasks 155
Dependency on shared resources leads to inconsistent results 157
Predefined order of execution 158
6.3 Testing functional code 159
Treating a function as a black box 159 Focusing on business

logic instead of control flow 160 Separating the pure from


the impure with monadic isolation 161 Mocking external


dependencies 164
6.4 Capturing specifications with property-based testing 166
6.5 Measuring effectiveness through code coverage 172
Measuring the effectiveness of testing functional code 173
Measuring the complexity of functional code 177
6.6 Summary 179

7 Functional optimizations 180


7.1 Under the hood of function execution 181
Currying and the function context stack 183 ■
Challenges of
recursive code 186
7.2 Deferring execution using lazy evaluation 188
Avoiding computations with the alternation functional
combinator 189 Taking advantage of shortcut fusion
■ 190
7.3 Implementing a call-when-needed strategy 191
Understanding memoization 192 Memoizing computationally

intensive functions 192 Taking advantage of currying and


memoization 196 Decomposing to maximize memoization 196


Applying memoization to recursive calls 197


7.4 Recursion and tail-call optimization (TCO) 199
Converting non-tail calls to tail calls 201
7.5 Summary 203
CONTENTS xiii

8 Managing asynchronous events and data 205


8.1 Challenges of asynchronous code 206
Creating temporal dependencies among functions 207
Falling into a callback pyramid 208 Using continuation-

passing style 210


8.2 First-class asynchronous behavior with promises 214
Future method chains 216 Composing synchronous and

asynchronous behavior 221


8.3 Lazy data generation 224
Generators and recursion 226 ■ The Iterator protocol 228
8.4 Functional and reactive programming with RxJS 229
Data as observable sequences 229 Functional and reactive

programming 230 RxJS and promises 233


8.5 Summary 234

appendix JavaScript libraries used in this book 235


index 239
preface
When I was in college and graduate school, my class schedule was focused on object-
oriented design as the sole methodology for planning and architecting software sys-
tems. And, like many developers, I began my career writing object-oriented code and
building entire systems based on this paradigm.
Throughout my development career, I’ve learned and followed programming lan-
guages closely, not only because I want to learn something cool, but also because I’m
intrigued by the design decisions and philosophy that each language fosters. Just as a
new language provides a different perspective on how to approach software problems,
a new paradigm can achieve the same effect. Although the object-oriented approach
continues to be the modus operandi of software design, learning about functional
programming will open your eyes to new techniques that you can use on their own or
in parallel with any other design paradigm that fits your application.
Functional programming has been around for years, but to me it was only a minor
distraction. I had heard and read about the benefits of Haskell, Lisp, Scheme, and,
more recently, Scala, Clojure, and F# in terms of expressiveness and being highly pro-
ductive platforms; even Java, which has traditionally been known as a verbose language,
has functional artifacts that make code more succinct. Eventually, the minor distrac-
tion became impossible to avoid. And guess what? JavaScript, that object-oriented
language everyone uses, can be turned around 180 degrees and used functionally. It
turns out that this is the most powerful and effective way to use JavaScript. It took me
a long time to discover this, and in this book I want to make you aware of it so you
don’t have go on wondering why your JavaScript code is becoming so complex.

xv
What is functional programming? 5

and use it to solve complex JavaScript tasks. But before we can get into all this, you
need to learn why thinking functionally is important and how it can help you tackle
the complexities of JavaScript programs.

1.1 Can functional programming help?


Learning functional programming has never been as important as it is today. The
development community and major software companies are starting to realize the
benefits of using FP techniques to power their business applications. Nowadays, most
major programming languages (Scala, Java 8, F#, Python, JavaScript, and many more)
provide either native or API-based functional support. Hence, FP skills are in high
demand now and will continue to be in the years to come.
In the context of JavaScript, an FP mindset can be used to shape the incredibly
expressive nature of the language and help you write code that is clean, modular, test-
able, and succinct so that you can be more productive at work. For many years, we’ve
neglected the fact that JavaScript can be written more effectively in a functional style.
This neglect is partly due to an overall misunderstanding of the JavaScript language,
and also due to JavaScript’s lack of native constructs to properly manage state; it’s a
dynamic platform that places the burden of managing this state on us (the ones
responsible for introducing bugs into our applications). This may work well for small
scripts, but it becomes harder to control as your code base grows. In a way, I think FP
protects you from JavaScript itself. I discuss this further in chapter 2.
Writing functional JavaScript code addresses most of these concerns. Using a set of
proven techniques and practices based on pure functions, you can write code that is
easy to reason about in the face of increasing complexity. Writing JavaScript function-
ally is a two-for-one deal, because you not only improve the quality of your entire
application, but also gain more proficiency in and a better understanding of the
JavaScript language.
Because functional programming isn’t a framework or a tool, but a way of writing
code, thinking functionally is radically different from thinking in object-oriented
terms. But how do you become functional? How do you begin to think functionally?
Functional programming is intuitive once you’ve grasped its essence. Unlearning old
habits is the hardest part and can be a huge paradigm shift for most people who come
from an object-oriented background. Before you can learn to think functionally, first
you must learn what FP is.

1.2 What is functional programming?


In simple terms, functional programming is a software development style that places a
major emphasis on the use of functions. You might say, “Well, I already use functions
on a day-to-day basis at work; what’s the difference?” As I mentioned earlier, FP
requires you to think a bit differently about how to approach the tasks you’re facing.
It’s not a matter of just applying functions to come up with a result; the goal, rather, is
to abstract control flows and operations on data with functions in order to avoid side effects
6 CHAPTER 1 Becoming functional

and reduce mutation of state in your application. I know this sounds like a mouthful, but
I’ll visit each of these terms further and build on them throughout the book.
Normally, FP books start with computing Fibonacci numbers, but I’d rather start
with a simple JavaScript program that displays text on an HTML page. What better text
to print than the good ol’ “Hello World”:

document.querySelector('#msg').innerHTML = '<h1>Hello World</h1>';

NOTE I mentioned earlier that because functional programming isn’t a spe-


cific tool, but a way of writing code, you can apply it to write client-side
(browser-based) as well as server-side applications (Node.js). Opening the
browser and typing in some code is probably the easiest way to get JavaScript
up and running, and that’s all you’ll need for this book.

This program is simple, but because everything is hardcoded, you can’t use it to dis-
play messages dynamically. Say you wanted to change the formatting, the content, or
perhaps the target element; you’d need to rewrite this entire expression. Maybe you
decide to wrap this code with a function and make the change points parameters, so
you can write it once and use it with any configuration:
function printMessage(elementId, format, message) {
document.querySelector(`#${elementId}`).innerHTML =
`<${format}>${message}</${format}>`;
}

printMessage('msg', 'h1','Hello World');

An improvement, indeed, but still not a completely reusable piece of code. Suppose
you want to write to a file instead of an HTML page. You need to take the simple
thought process of creating parameterized functions to a different level, where param-
eters aren’t just scalar values but can also be functions themselves that provide addi-
tional functionality. Functional programming is a bit like using functions on steroids,
because your sole objective is to evaluate and combine lots of functions with others to
achieve greater behavior. I’ll fast-forward a bit and show you a sneak peek at this same
program using a functional approach.

Listing 1.1 Functional printMessage

var printMessage = run(addToDom('msg'), h1, echo);

printMessage('Hello World');

Without a doubt, this looks radically different than the original. For starters, h1 isn’t a
scalar anymore; it’s a function just like addToDom and echo. Visually, it feels as though
you’re creating a function from smaller functions.
There’s a reason for this madness. Listing 1.1 captures the process of decomposing
a program into smaller pieces that are more reusable, more reliable, and easier to
Another random document with
no related content on Scribd:
Jänöjussi meni lähempää katsomaan, kurkistipa ikkunastakin.

Tuossa istui vanha mies pienen pöydän ääressä, kirja kädessään,


ja pöydällä oli kuusi ja sen oksilla tuikki muutamia kynttilöitä. Vanha
mies lauloi jouluvirttä hartaana ja lopetettuaan laski kirjansa hyllylle,
kopeloi jotain uunista ja toi sieltä vadin pöydälle, otti sitten
nurkkakaapista leipäpalan ja kastaen sitä vatiin, aloitti ateriansa.
Eipä ollut ukolla herkkuja, mutta kasvoista loisti suuri tyytyväisyys ja
aterioituaan korjasi hän ruuan tähteet ja aloitti taas uuden
jouluvirren.

Jänöjussi oli unohtunut ikkunasta katselemaan tupaan. Kun ukko


lopetti virtensä, sammutti hän kynttilät ja oikaisihe penkille
lepäämään.

Silloin vasta jänöjussi huomasi, että päivä vaikeni. Tilhiparvi


pyrähti pihlajaan, jossa punaiset tertut loistivat aamuhämärässä. Ka,
olipas ukko laittanut joululyhteenkin! Lintuparvi pyrähti jo siihenkin.

Jänöjussi oli unohtanut kokonaan surunsa, katsellessaan tuvan


ikkunasta. Iloisin mielin hän kääntyi äskeiselle polulleen ja verkkaan
laukkaili, silpaisten sieltä täältä jotain suuhunsa. Olikin mentävä
suoraa päätä laihohalmeeseen aamiaiselle, koskapa kaikki metsän
asukkaat näyttivät olevan aamiaispuuhissaan jouluaamun hiljaisessa
hämärässä.

Kissapataljoona sammakkokaartia vastaan.


Kissayhteiskunnassa oli ilmestynyt syvää tyytymättömyyttä siitä,
että sammakot herrastelivat heidän pyyntimaillaan. Kaikki hiirenpojat
joutuivat heidän uhrikseen. Päätettiin pitää asiasta kokous ja
kutsuttiin mirrit koolle erään niittyladon taakse.

Kutsua noudateltiin yleisesti. Valtava kissajoukko marssi


metsätietä kokouspaikalle ja sangen meluavasti keskusteltiin
asiasta, joka oli kohta tuleva kokouksessa esille.

Kun nähtävästi kaikki seutukunnan kissat olivat kokoontuneet


paikalle, aloitettiin kokous ja valittiin vanhin joukosta, Alitalon musta
Maija puheenjohtajaksi.

Kylläpä oli puhevuorojen pyytäjiä! Hännät pystyssä ja silmät sirrillä


pyydettiin puhevuoroja. Maija oli kiivennyt nurkkaa myöten ladon
katolle, jossa istui silmäillen mirriparvea. Jokainen heistä tahtoi
puhua yhteen ääneen. Maijan piti jo kiivastua.

— Ellette tuki suutanne, heitän päähänne kiven katolta.

Muristiin tyytymättömänä. Mikä tämä Maija luuli olevansa, kun niin


uhkaili. Mokomakin mustakylki! Joku jo ehdotti, että valittaisiin uusi
puheenjohtaja.

Selvittiin siitä vihdoinkin kokouksen pitoon ja yksimielinen päätös


tuli, että oli julistettava sota sammakoita vastaan. Johtajaksi valittiin
suuri, kirjava Mikko.

Retkelle oli lähdettävä jo seuraavana aamuna. Ja kun pitkä matka


olisi vaikea marssimalla mennä, päätettiin pyytää Mikkolan suurta
koiraa kyytimään käsikärryillä matkuetta. Aamulla jo varhain
päätettiin lähteä. Aseen sai itsekukin valita mieleisensä.
Tiesivätpä sammakotkin ajoissa tästä mirrien puuhasta ja päättivät
järjestäytyä hekin puolestaan. Ei tarvinnut edes kokousta pitää,
kaikki liittyivät vaaran suuruuden vuoksi sammakkokaartiin, jonka
päälliköksi valittiin rumin joukosta, oikein vanha rupisammakko.

Ja kun saatiin tietää sekin, että kissat aikoivat ajaa heitä vastaan
komeasti kärryillä, päättivät he ottaa auton, että näyttäisi
komeammalta.

Valmistettiin kaikki seuraavaa päivää varten. Johtajat, lähetit ja


vakoilijat. Ei puuttunut muuta kuin aseita. Mutta hyviä
mukulakiviähän oli maantien ojassa. Ne kyllä kelpasivat.

Tuli sitten seuraava päivä ja sotaliikkeet aloitettiin molemmin


puolin. Kissapataljoona lähti ensiksi liikkeelle. Ja kun matkalle
lähtijöitä karttui niin paljon, että kaikki eivät mahtuneet käsikärryille,
joita Mikkolan suuri Moppe veti, niin nuoremmat marssivat jalkaisin,
niinkuin sotamiehet ainakin. Aseeksi oli saanut mikä mitäkin, yksi
kapustan, toinen hierimen, kolmannella keikkui olalla puntari ja
neljäs heilutti luudanvartta, niin että aseistus oli täysin
mallikelpoinen.

Marssittiin eteenpäin ja odotettiin sammakkokaartin hyökkäystä.


Olihan selvää, että sammakot, jotka olivat niin häijyjä, ensiksi
hyökkäisivät, varsinkin kun olivat saaneet tiedon kissojen
liikekannalle panosta.

Ja siellähän sammakkokaarti jo tulikin mahtavasti ja eivätkö


pahukset ajaneet oikein autolla! Kissapataljoona nosti hurjan
sotahuudon ja hoputtivat Moppea eteenpäin. Mutta Moppe, joka oli
lähtenyt vain kyytimään, eikä tappelemaan, karisti valjaansa, jättäen
kissakuorman maantielle, samalla loikkien nauraen metsään.
Siinäkös äläkkä syntyi. Toiset huusivat sammakkokaartille, että
väistyä pois tieltä, toiset lähtivät Mopen jälkeen, kurittamaan petturia,
joka jätti heidät häpeällisesti keskelle tietä.

— Poistukaa tieltä ja meidän pyyntimailtamme! huusivat kissat


kohti kurkkua.

— Pois alta! Me tässä herroja ollaan, kiljuivat sammakot ja ajoivat


uhitellen autollaan muutamien mirrien varpaille.

Mirrit alkoivat hutkia aseillaan sammakoita kukkuroillaan olevaa


autoa, vaatien metsästysmaitten luovutusta heidän
yksinoikeudekseen.

Mutta hyvin järjestetyssä armeijassa on malttia ja reippautta.


Sammakkojohtajat perääntyivät ja vahvistivat hyökkäystä.
Kissapataljoona köyristi selkäänsä voiton huumeessa ja marssi
eteenpäin.

Mutta voi surkeutta! Nyt ne rupikonnat jo taas hyökkäsivät heittäen


kiviä tiheänä sateena kissojen pataljoonaan. Päitä ja silmiä puhkeili,
hierimet ja kauhat jäivät tielle ja yksi toisensa perästä alkoi pötkiä
karkuun. Kohta oli ratkaiseva voitto sammakoilla, jotka eivät kylliksi
osanneet riemuaan ilmaista.

Häpeissään, hännät alhaalla, päät ja käpälät kääreissä palasivat


mirrit sotaretkeltään. Tien vieressä taistelun kulkua seurannut Mikko
Repolainen virnisteli heille ja harakat nauroivat tien kahden puolen.
— Ylpeys käy aina lankeemuksen edellä, huusi vielä Repolainen
mirriparoille, jotka valitellen marssivat kotiinsa.
Koirien kirkko.

Kylän koirat, Moppe, Mikko ja Julle keskustelivat kerran


kirkkomatkasta, joka oli päätetty tehdä ensi sunnuntaina.

— Minusta olisi mukavampi istua venheen kokassa, kun toiset


soutavat. Nythän kuljetaan venheillä kirkoissa, kun ei ole moottoreita
eikä muitakaan vesikulkuneuvoja näin sota-aikana, puhui viisaasti
Moppe, pieni pihakoira.

— Niin minustakin, virkkoi Julle, iso villakoira. Satuin kerran


hevoskyydillä kirkkoon lähtemään ja ruumiini tuli ihan kipeäksi.
Ajoneuvoissa huojutti niin, että ihan pahaa teki. Parasta, että ensi
sunnuntaina lyöttäydymme venheen kokkaan, kun taloista kirkkoon
lähtevät, vai mitä sanoo Mikko?

Mikko, nulikkamainen jäniskoira murahti. — Samapa minulle on,


miten mennään. Omasta puolestani kyllä pidänkin enemmän
hevoskyydistä, varsinkin talvella. On niin mukava haukahdella
hevoselle, joka ottaa aina silloin tuiman ravin.

Näin oli tuumittu ja kerran tehty yritys kirkkoveneen kokkaan.


Mutta se oli ollut turha vaiva koiraparoiille, venemiehet olivat
potkaisseet heidät maalle ja ulisten jäivät nämä katselemaan
menijäin jälkeen.

Matka oli liian pitkä lähteä jalkasin taivaltamaan ja päätettiin jäädä


odottamaan talvea. Pianhan se tulikin ja silloin toverukset vartomaan
tilaisuutta kirkkoon päästäkseen.

— Ja silloin minä istun kuskille ja näytän, miten saan hevosen


laukkaamaan, uhkasi Mikko.
Tulipa sitten tilaisuus. Moppe oli kuullut eräänä päivänä tuvassa
sanottavan, että renkipojan on mentävä kirkolle. Silloin Moppe
juoksuttamaan sanaa toisille, että lähtökuntoon valmistautuvat. Ja
kun poika ajoi raudikolla, niin yks' kaks' hyppäsivät koirat tienvierestä
rekeen ja Mikko asettui kuskille. Poika nauroi eikä kehdannut ajaa
koiria pois reestään. Olihan lämpimämpi koirien kupeessa kovalla
pakkasella.

Ja niin sitä mentiin kirkonkylään. Moppe haukahteli ahkeraan


kuskilla ja ruuna ravasi niin että tierat paukkuivat. Mikko ja Jullekin jo
ihastuksesta haukahtelivat ja poika nauroi. Luminen metsä tien
kahden puolen vain vilahteli kun reki tulista vauhtia luisti eteenpäin.

Päästiin kirkonkylään ja kun oli sunnuntai, kirkkokin oli tulijoille


avoinna. Koirat menivät kirkkoon ja kiertelivät ihmeissään katsellen
joka paikkaa. Olipa soma talo, kun penkkejäkin oli permanto täynnä.
Ja sitten semmoiset soittovehkeet! Ihan selkäpiitä karmi niitä
kuunnellessa.

Mutta suntio huomasi koirat ja suurella kuhmurakepillään ajoi


heidät ulos kirkosta. Ei auttanut sekään, että Julle uhkaavasti murisi
ja Mikko haukahteli. Julle sai vielä suntiolta kengän korolla iskun
takapäähänsä kirkon ovella.

— Samapa se, tuumivat toverukset. Onhan tämä komeus nyt


nähtynä. Parasta, kun tehdään oma kirkko sinne kotimökille, niin ei
tarvitse kenenkään siellä meitä pois ajella.

— Niin tehdäänkin ja tulkoonpas sinne suntio, niin näytetään sille,


murisi Julle.
Matka tosin oli näin talvella hauskaa kirkolle, mutta kun ei aina
onnistuisi hevoskyytiäkään saamaan, niin parasta oli ryhtyä
rakennustyöhön heti.

Mentiin taas samaa kyytiä kuin aamullakin ja päivällisen syötyä


pääteltiin käydä kylän koirien kanssa keskustelemassa asiasta.

Pidettiin kokous, jossa Julle toimi puheenjohtajana.

— Suntioiden ilkeys on teille kaikille tunnettu ja se kuuluu olevan


joka paikassa samanlaista, niin minä ehdotan, että rakennetaan oma
kirkko ja käydään heti käsiksi rakennustyöhön.

Haukahdettiin ja muristiin tyytyväisyydestä. Julle oli sitten mainio!


Osasi puhua kuin mies ja saada innostumaan. Heti vain työhön
käsiksi.

— Ja mitä käytetään rakennus aineena? kysyi Julle nuoleksien


tyytyväisenä partaansa. Kiitos oli hänelle kuin makea herkkupala.

— Jaa, miten sen rakennusaineen kanssa, aprikoivat toiset,


heilutellen mietteissään häntäänsä.

— Ehdottaisin tehtäväksi lumesta, haukahti Julle, kannatetaanko?

Ihan ulistiin ilosta. Se tuo Julle oli sitten nerokas keksimään!


Lumesta tietysti! Ei olisi puutetta rakennusaineesta.

Seuraavana päivänä koottiin kaikki kylän koirat ja kun sattui vielä


suvi sää, oli mainio aloittaa rakennustyö. Hyvin se sujuikin, ja kun
piskit olivat muutaman viikon puuhailleet, niin jopa eräänä päivänä
vietettiin harjaorren nostajaiset. Julle puhui hyvästä sovusta, joka oli
vallinnut rakennustyössä ja toivotti kirkolle pitkää ikää.
Ja seuraava päivänä saatiin katto valmiiksi, eikä puuttunut enää
muuta kuin risti vain kiinnitettäisiin harjalle.

— Minä vanhimpana joukosta pyytäisin sen työn osakseni, pyysi


Julle. Samalla saan sieltä yläilmoilta lausua läsnä olijoille jonkun
mieleenpainuvan sanan.

Julle kiipesi kirkon harjalle risti kainalossaan. Mutta katto oli


rakennettu hutiloimalla ja Julle muksahti sieltä katon mukana alas.
Satuttipa vielä pahasti kuononsa ja koipensa.

— Minä jo varoitin teitä, rakkaat seurakuntalaiset, huonosta työstä,


ulisi Julle. Näin tässä kävi. Käpälä on poikki ja kuono kaikki
kappaleina. Vieköön nyt ristin harjalle kuka vain uskaltaa.

Neuvoteltiin asiasta ja jätettiin katon korjaus toiseen kertaan.


Kellään ei ollut halua lähteä sinne putoamaan.

Tulipa sitten keväiset lämpimät ilmat. Seuraavana sunnuntaina


päättivät koirat lähteä toimittamaan kirkkonsa juhlalliset vihkiäiset.

Mentiin paikalle, mutta voi ilkeys! kirkosta ei ollut muuta jälellä kuin
pahainen hyhmätönkkö ja sekin romahti näkymättömiin ja suli
auringon paisteessa vedeksi.

— Tämäpä oli nyt sangen surullinen juttu, muristiin yleisesti. —


Kuka se neuvoi semmoisen rakennusaineen?

— Tuo Jullehan se oli niin viisas, haukahti Mikko.

Julle lähti häntä koipien välissä jurppimaan pois paikalta, toisten


jäädessä surullisina tuijottamaan kirkkonsa raunioita, vesilammikkoa
ja hyhmäriekaleita sammalmättäiden keskellä.
Kruunajaiset metsässä.

Pikku Pentti kiipesi äidin polvelle.

— Kuulehan äiti, miksi karhua sanotaan metsän kuninkaaksi?


kysyi hän.

— Siksi, kun se on mahtavin ja väkevin kaikista metsän


asukkaista.

— Onko sitten kuningas aina väkevin kaikista?

— On tämä metsän kuningas.

— Onko karhu sitten oikein kruunattu kuninkaaksi?

— Onpa kyllä. Tahtoisit varmaankin, että kertoisin siitä.

— Kerro sitten, mutta oikein hauskasti.

— Jos vain osaan. No, kuule nyt sitten.

Eräänä syksyisenä päivänä kiistelivät kettu, susi ja ilves, kuka olisi


heistä voimakkain. Päätettiin koettaa. Susihan siinä voitolle jäi
voimassa, mutta ilves sukkeluudessa. Tuli koppelo kokoukseen,
lentää kohautti hongan oksalle ja uteli, mistä on kysymys. Sanottiin
kiistainen asia koppelolle. Susi kehaisi koetuksessa voitolle
päässeensä ja virkkoi viimeiseksi:

— Minä olen voimakkain metsässä.

— Hah, hah, nauroi koppelo, kylläpä vähän tiedät. On se vielä


yksi, joka on sinua voimakkaampikin. Kämmenellään se sinut
rutistaa.

— Kuka se on? kysäisi susi hieman nolona.

— No karhupa tietenkin.

— Vähänpäs kyllä, väitteli susi. Tulkoon koettamaan. Olkoon sitten


kuningas metsässä, jos voimakkaammaksi jää.

Kutsuttiin karhu voimain koetukseen.

Valittiin tervaskanto, joka piti nostaa ylös maasta.

Susi kävi ensiksi koettamaan. Hukka parka reutoi ja tempaili niin,


että hiki tippui otsalta. Ärähteli ja suuttui voimattomuuteensa, karjasi
karhulle:

— Ei se nouse sinultakaan!

Karhu kävi vuorostaan koettamaan. Sylkäsi kouriinsa ja iski ne


kantoon.
Jopa kanto rusahteli arveluttavasta. Tarttui uudelleen ja karjasi.
Silloinpa kanto keikahti kumoon ja kontio voitonriemusta hihkasi, niin
että metsä kajahti.

Voimain koetusta oli koko, metsän väki hirvestä hiirenpoikaan asti


katsomassa. Osoitettiin karhulle suurta suosiota.

— Kontio on voimissa väkevin. Susi saa hävetä.

— Kontio kuninkaaksi!

— Suostuuko kontio meidän kuninkaaksemme? kysyivät kurki ja


koppelo, niiaten ja kumartaen mesikouran edessä.
— Kun minä vain osaisin, mörähti karhu. Kyllähän minä koettaisin
jokaista suojella ja auttaa taitoni ja kykyni mukaan.

Tapahtui kuninkaan vaali, ja kontio huudettiin kuninkaaksi.

— Nyt ei sitten muuta kuin kruunajaisvalmistuksiin, kotkotti


koppelo kannon nenässä. Kuka valitaan juhlan valmistajaksi ja
juhlamenojen ohjaajaksi?

— Koppelo ohjaamaan juhlan valmistusta ja Mikko Repolainen


juhlamenojen ohjaajaksi!

Kaikki olivat yksimielisiä ja puheenvuoroja ei tarvinnut käyttää.

— Käydäänpä sitten valmistuksiin käsiksi ja kaikki minua


auttamaan, komensi koppelo. Ylihuomenna on adventtijuhla, se sopii
mielestäni kruunajaispäiväksi. Työhön joka kynsi!

Valikoitiin kaunein paikka korvessa valtaistuin saliksi. Ympärillä oli


kaunista kuusikkoa ja hongikko oli seininä joka puolella. Juhlasalin
keskeltä kohosi valtava mätäs, jonka nenässä törrötti tasapäinen
tervaskanto. Oltiin taaskin yksimielisiä, ettei parempaa paikkaa
juhlasaliksi voisi löytää.

— Ja nyt koristamaan valtaistuinta, komensi koppelo. Sammalta,


kauneimpaa mitä löytyy, kantamaan joka-ainoa. Hukka saa
toverineen taitella kuusen oksia ja tuoda paikalle. Me Repolaisen
kanssa niitä järjestämme mielemme mukaan.

Työ alkoi ja hyvin se sujuikin. Olipa siinä elämää. Teeret,


metsäkanat ja muut linnut repivät sammalta ja kantoivat kannon
juurelle, jossa oli toinen työväki, Repolainen eukkoineen ja poikineen
ja pari kurkea puuhaamassa. Koppelo kääntelehtihe kannon
nenässä ja neuvoi, miten työ oli suoritettava. Susi tovereineen kantoi
kuusen oksia paikalle ja hän murisi tyytymättömänä. Hän oli ollut
kokonaan eri mieltä kuninkaan vaaleissa, ja näin jouduttuaan
häviölle, päätti hän mielessään tehdä kepposet uudelle kuninkaalle.

Oli vain yksi päivä kruunajaisiin ja työtä tehtiin kuumeisella


kiireellä. Hirvi lähetettiin pyytämään Tapiota, juhlapäiväksi
koristamaan juhlasalin lumikoristeilla. Oravat kantoivat naavoja, joilla
valtaistuin oli päätetty verhota. Jänöjussit tepastelivat tietä laitellen,
jota myöten hallitsijan oli määrä saapua paikalle. Olipa siinä iloista
touhua. Kontio hyvillä mielin salaa katseli ja susi poikineen kadehti.

Seuraavan päivän iltana oli kaikki valmiina, katseltiin ja ihasteltiin


valtaistuimen suuremmoisuutta. Sammalista ja havuista oli kaikki
valmistettu koppelon taitavalla johdolla. Poistuttiin juhlapaikalta,
luvaten aamulla jo aikaisin saapua nallea odottamaan.

Mutta hukka mietti jutkua itsekseen. Oli siitä jo puhunut


tovereilleenkin ja saanut heidän suostumuksensa ja kannatuksensa.
Oli huomattu, että kanto, jolle valtaistuin perustettiin, oli laho ja
muutenkin huojuvalla perustalla. Kun vähän kaivettaisiin vain maata
sen alta, olisi hyvä pyydys siinä valmiina kontiolle. Nurin niskoin siitä
kellahtaisi siihen noustuaan.

Yön tultua ryhdyttiin tuumaa toteuttamaan ja kaivettiin kannon alta


maata pois ja asetettiin kanto lahojen pönkkien varaan. Sitten
laitettiin kaikki taas jälleen paikalleen.

— Saa siitä tuleva kuningas aikamoisen pyöräyksen, naureksi yksi


ilkeän työn tekijöistä.

— Hyvä, ettei selkäänsä katkaise, arveli toinen.


Poistuttiin ilvehtien ja odotettiin aamua.

Mutta taivaalta alkoi tipahdella suuria lumihiuteita ja yön tullen tuli


pyry. Aamupuolella lakkasi lumen tulo ja Tapio, jolta oli viimeistä
kaunistelua pyydetty, siirteli taivaan verhoja, että tähdet pääsivät
tuikkimaan. Pakkasukkoa pyyteli vielä Tapio avukseen ja kohta
paukahteli metsässä hänen kuhmurainen keppinsä, kun hän
rakenteli huurrevaippoja puihin ja kuningasistuimen ympärille.

Ja kun tuli aamu ja aurinko nousi, kimalteli juhlasali ja koko metsä


komeimmissa timanteissaan. Metsänväki ryhmittyi valtaistuimen
ympärille odottamaan mesikämmentä.

Hetken kuluttua tulikin kurki eellimäisenä ja hänen perässään


kontio tallustellen hitain ja arvonsa mukaisin askelin paikalle. Kurki
otti juhlallisimman ilmeensä ja kumarteli kontiolle.

— Herra kuningas, suvaitkaa nousta valtaistuimellenne, koko


metsä palvelee nöyränä alamaisena teitä.

Karhu kiitti kunniasta ja luottamuksesta, jota hänelle oli osoitettu ja


alkoi kavuta kannon nenään. Mutta hukka tovereineen naureksi
salaa kouraansa ja jännityksellä odotti, miten nallelle kävisi.

Kontio pääsi kannon nenään, joka alkoi jo arveluttavasti raskaan


painon alla huojua. Koppelo laski kanervanvarsista ja jäähileistä
tehdyn kruunun hänen päähänsä ja aikoi ruveta puhetta pitämään,
mutta silloinpa istuin petti ja nalle kellahti korkealta alas mättään
juurelle suurella ryskinällä.

Hukka päästi tovereineen iloisen naurun, mutta toiset kävivät


sanattomiksi hämmästyksestä.
Nalle oli satuttanut selkänsä kiveen ja hirveästi ärjyen kömpi hän
jaloilleen, karjasi vielä niin, että siivekkäät koholle hypähtelivät ja
kävi kourin käsiksi valtaistuimeensa ja hajoitti sen perustuksiaan
myöten.

Mikko Repolainen oli salaa seurannut hukan työtä ja suhahti nyt


koppelon korvaan tapahtuneesta petoksesta. Koppelo otti nyt
puhevuoron ja kiirehtien karhulta pyytämään anteeksi, ilmaisi
yleisölle hukan salajuonet. Samalla pyysi hän, että nalle olisi heidän
kuninkaansa kaikesta huolimatta.

Hukka käskettiin koko sukunsa kanssa poistumaan ja kun tämä oli


muristen vaatimuksen täyttänyt, voitiin jälleen ryhtyä juhlaa
jatkamaan.

Iltapäivällä, kun istuttiin yhteisellä juhla-aterialla, suli nallen mieli jo


täydellisesti, kun hänelle tarjottiin makea vasikkapaisti marjojen
kanssa.

Ja siitä lähtien on nalle ollut metsän kuningas eikä hänen


valtaansa käy enää kukaan riistämään.

Nallen jouluyö.

Nalle oli joulun edellisenä päivänä kääntänyt kylkeään ja


nukahtanut uudelleen. Mutta seuraavana yönä oli pakkanen
paukutellut niin korvia särkevästi, että nalle oli herännyt ja
haukotellut pitkään ja sitten ärjähtäen ponnahtanut pesästään ulos.
Olihan se tosin vastoin tavallisuutta, että hän unensa katkaisi
keskellä talvea, vaan olipa tässä vielä aikaa maatakin, jos hieman
pistäytyisi töllistelemään, mitä nyt metsässä oikein puuhattiin,
koskapa pakkasukkokin niin mahtavasti moukaroi.

Nalle istui takasillaan ja haisteli ilmaa, kylläpä oli tiukka pakkanen!


Ihan nenänpäähän otti. Kas, miten metsäkin oli vahvassa huurteessa
ja luntakin näytti olevan kovin vahvasti. Eikös kuukin näyttänyt
naamaansa metsän takaa. Olipa laihtunut. Ei ollut kuin puolikas
naamasta jälellä.

Mitähän, jos tekisi pienen kierroksen metsässä. Hyväksi se kai


olisi, kun jäsenetkin tahtovat jäykistyä. Ja olipa korea kuunvalokin
metsään vetämässä.

Nalle vihelsi kämmeniinsä, joita pakkanen oli hieman puraissut, ja


lähti sitten löntystelemään. Ääh, miten jäykäksi ne takaset taas olivat
tulleetkin! Ja kylläpä hankikin upotti. Taitaisi olla parasta, jos kääntysi
pesäänsä takaisin.

Nalle oli löytänyt metsätien ja tarkasteli sitä. Ähäh, sepäs kannatti.


Pitääpä katsoa, minne se menee.

Nalle löntysteli ja raapaisi mennessään pihkaa puun kupeesta


suuhunsa. Vihoiteli ja ärähteli, kun huurretta sattui niskaan
karisemaan puitten oksilta.

Ka, mikäs sieltä nyt tuli kelkkansa kanssa? Ihminen taisi olla, mikä
lienee partaniekka. Heh, eiköhän liene ihan vanha joulu-ukko
liikkeellä. Olipas vain!

— Hyvää iltaa, ukko! Mihin sinä taas tuon kelkkasi kanssa


taivallat? kyseli nalle, lyöden olalle vanhaa joulu-ukkoa
kämmenellään, niin että tämä oli hankeen tuiskahtaa.

— Sitäpä vanhaa tointani hoitelen. Pitäisi vain jouduttaa kilteille


pojille ja tytöille näitä tavaroitani. Mutta mitä vanha veli nyt aikoo, kun
on pesästään noussut. Varmaankin jonnekin joulunviettoon?

— Onko nyt sitten joulu? kysyi nalle ihmeissään.

— Sitä se on, kun aina makaa, ei tiedä joulustakaan mitään. Aatto-


ilta on toki parhaillaan. Pitäisi tässä näitä viimeisiä tavaroitani joutua
jakelemaan. Hauskaa joulua vain sinulle!

Joulu-ukko lähti kelkkoineen eteenpäin ja nalle jäi siihen


ihmettelemään. Vai oli nyt joulu, sepä mukavata! Pitääpä katsoa,
vieläkö metsässä vietetään joulua niinkuin ennenkin.

Nalle tassutteli ja puhalteli kouriinsa Kovinpa se pakkanen nyt


tungetteli. Ihan huurteeseen veti naamankin. Kas, eikös olekin
metsän väki liikkeessä. Tuosta on Repolainen loikkinut joulupaistin
hakuun ja metsäkanat kuppelehtivat tuolla niityllä.

Nalle vihelsi ja riekot vastasivat: — Väkkärä, kärä, kää, pakkanen


on.
Teeriparvi kotkotti ja karisteli lunta koivusta hänen hartioilleen. —
Malttakaahan, ärähti nalle, jospa pääsen sinne puuhun, niin…

— Jäykätpä ovat takasesi, ilvehtivät koppelot. Tassuta vain siellä


maassa.

Nalle tunsi tulevansa juhlatuulelle. Olikin virkistävää lähteä kerran


talvessa jaloittelemaan, varsinkin näin jouluyönä. Kah, jänöjusseja,
mitä iloaan pitävät! Kylläpä niillä on hauskaa.
Puputit, huomattuaan nallen, tulivat ja ympäröivät hänet piiriin
keskelleen, ja sitten aloitettiin joululaulu.

Hei, hei, nalle kulta, nyt on joulu, metsänväeltä jo loppui


touhu, kilvan käymme kaikki karkeloon. Kopsis, tupsis,
metsän vanha ukko, laita pesäs päälle lumilukko, hei, hei,
kaikki joutaa karkeloon.

— Menettekö siitä! tuhahti nalle ja hotaisi jussukoita


kämmenellään, mutta nämä vain jatkoivat piiriään ja teeret ja metsot
karistelivat lunta lisää hänen hartioilleen. Eivätkös pienet lumilinnan
tontutkin kuulleet, että nalle on lähtenyt liikkeelle. Lumisten näreitten
alta alkoi kiilua iloisia silmiä ja nauravia suita ja kohta tontut
lehahtivat jänöjussien kanssa samaan piiriin. Ja nytkös laulettiin niin
että metsä kaikui. Nalle hörähteli, mutta ei osannut suuttua, vaikka
pikkutontut jo nykivät häntä turkistakin.

Ja koko metsänväki tuli leikkiä katsomaan. Hukka kiipesi isolle


kivelle ja Repolainen tovereineen nousi ladon katolle näytelmää
kallella päin seuraamaan.

— Mitäs nyt keksitte, mörähti nalle hyväntuulisesti, kun laulu oli


loppunut.

— Nyt lähdemme saattamaan mesikämmentä pesälleen, sanoivat


jänöjussit. Ja kun nalle katsoi parhaaksi tämän iltakävelyn lopettaa ja
kääntyi pesälleen, lähtivät ensin jänöjussit, sitten tontut ja näiden
perään koko metsänväki. Olipa komea saattue nallella.

— Mutta ettekö pahanilkiset tarjoa mitään syötävää minulle? ärähti


nalle, olisipa nyt vasikanpaistia ja puolukoita!
— Niitä herkkuja emme sulle saa, mutta muuta hyvää tuomme,
kun istut vain odottamaan.

Nalle istui tien viereen ja mietti mitä hänelle tarjottaisiin. Jokohan


toisivat ihan jouluherkkuja.

Kylläpä metsässä kävi rapina, kun irroitettiin pihkoja puista. Ja


kohta tontut kantoivat sylin täydeltä pihkaa ja sulloivat sitä nallen
suuhun.

Nalle maisteli. Mitä? Pihkaahan se oli, pätö herkkua, ja vielä


jouluyönä. Eipä kestinkiä kehdannut kehua. Parasta, kun lähtee
untaan jatkamaan.

Ja nalle lähti löntystelemään hieman tyytymättömänä muristen,


kun juhlakestitys oli ollut niin keskinkertaista laatua. Ja metsänväki
seurasi kulkueena pesälle saakka, jossa vielä molemmin puolin
toivoteltiin rauhan joulua metsänväelle ja nallelle hyvää unenjatkoa.

Pappilan hiirien joulu.

Vanhassa pappilassa oli joulun edellisenä päivänä pantu kaikki


mullin mallin. Vanha Riitta oli oikein suursiivoustuulella, niinkuin aina
ennenkin suurien juhlien edellä. Mutta nythän oli tulossa kaikista
suurin juhla ja vanha Riitta sai oikein poskensa punakoiksi
puuhatessaan.

Hiiriperhe oli asunut jo vuoden pappilassa. Ruokakonttorin


komeroissa oli hyvä piileksiä vaanivalta kissalta ja sieltä löytyi yhtä ja
toista hyvin makeata maisteltavaakin. Hiiriemo tiesi, että joulu oli
tulossa. Se oli puhunut siitä pojilleenkin ja kaikin odottivat he nyt,,
milloin ruokakonttorin hyllylle ilmestyisi jouluherkkuja. Vesi kielellä
kuvaili hiiriemo niiden makeutta pojilleen.

Hiiriemo ei ollut muistanut ollenkaan juhlien edellä käypää


suursiivousta. Niinpä hän nytkin hämmästyi, kun pappilan palvelijat
kolistelivat huoneissa luutineen ja vesisankoineen ja tulivat viimein
ruokakonttoriinkin, vanha Riitta komennellen ja koluten hyllyillä.
Eivätkös pistäneet kynsiään ihan joka komeroon! Hiiriemon täytyi
sukkelasti käyttää pieniä jalkojaan, päästäkseen pakoon.

Aikansa touhuttuaan ne menivät ja hiiriemo palasi jälleen


katselemaan minkälaista siellä nyt oli. Kylläpä olivatkin osanneet
panna kaikki hyllyt ja komerot puhtaiksi. Haisi vain luudalta ja vedeltä
eikä yhtään ruoka-aineilta. Mitä tässä nyt suuhunsa pistäisi
jouluherkkuja odotellessa. Isähiirikin tuli työstä jo päivälliselle ja
tahtoi ruokaa. Pojatkin siinä jo nälissään vikisivät.

— Mistä minä nyt teille ruokaa annan, kun kaikki on näin


puhdasta, valitteli hiiriemo. Parasta on kai ruveta odottamaan
jouluherkkuja.

Isähiiri jupisi huonosta taloudesta ja pujahti koloonsa. Oli kai


mentävä aittaan nakertamaan raakaa lihaa. Hän olikin ollut sinne
sopivaa koloa etsimässä ja päivälliselle lähtiessään löytänytkin.
Raaka liha ei tosin maistuisi kovinkaan hyvältä, mutta nälkä siitä toki
lähti. Ja isähiiri pujahti kolostaan seinän alitse lumipolulleen ja
aittaan. Huh! kylläpä siellä oli kylmä ja liha niin jäässä, että hampaita
paleli! Mitä se oli! Tuliko sieltä joku? Pakkanen taisi vain nurkissa
paukutella.
Palattuaan perheensä luo, tunsi isähiiri nenäänsä hienon paistetun
lihan lemun. Ruokasalissa kalisteltiin astioita ja kuului vanhan
rovastin ääni. Ahaa, olivat kai päivällisellä. Kohta kai tuotaisiin
tähteet ruokakonttoriin ja silloin saisi emo ja pojat popsia lämmintä
lihaa ja muitakin mukavia ja hän, höperö, oli lähtenyt suotta jäiselle
aterialle aittaan. Harmitti vähän. Emo ja pojat vielä naureksivat
hänen hätäilylleen.

Siinähän Riitta jo toikin ruuan tähteitä. Kun nyt menisi vain pois.
Kas, eikös ollut leipäkorissa tuoretta leipääkin, ja miten herkullisen
näköistä oli liha paistiastiassa! Ei muuta kuin käsiksi vain!

Sopipa nyt kylläisenä jäädä odottelemaan jouluherkkuja. Kai niitä


jo valmistettiinkin, koskapa keittiöstä tuli niin herkullinen tuoksu
nenään.

Hiiriperhe odotti. Vihdoin viimeinkin toi Riitta kopan ja asetti sen


hyllylle. Ihan vesi tuli jo kielelle.

Vai rinkilöitä ja pieniä leipiä! Ah, tämäpä mainiota! Maisteltiin.


Hiiriemo kehoitti isähiirtä tekemään leivoksista kassaa pyhiksi ja
isähiiri ryhtyikin oitis toimeen.

Mutta voi ilkeys! Riitta oli tullut niin hiljaa ruokakonttoriin, ettei
kukaan heistä huomannut, ennenkuin tämä löi käsiään yhteen ja
hihkasi.:

— Hiiriä! Pitääpä hakea kissa!

— Niin se nyt kävi taas sinun huolimattomuutesi takia, porasi


isähiiri emolle. Nyt joutuun piiloon!

You might also like