0% found this document useful (0 votes)
113 views62 pages

Functional Programming in C#: How To Write Better C# Code 1st Edition Enrico Buonanno - Discover The Ebook With All Chapters in Just A Few Seconds

The document promotes a collection of programming ebooks available for download at textbookfull.com, including titles on functional programming in C#, Python, JavaScript, and C++. It provides links to various resources for learning programming concepts and techniques. Additionally, it includes information about the publisher, Manning Publications Co., and the book's copyright details.

Uploaded by

leyitoqata
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
113 views62 pages

Functional Programming in C#: How To Write Better C# Code 1st Edition Enrico Buonanno - Discover The Ebook With All Chapters in Just A Few Seconds

The document promotes a collection of programming ebooks available for download at textbookfull.com, including titles on functional programming in C#, Python, JavaScript, and C++. It provides links to various resources for learning programming concepts and techniques. Additionally, it includes information about the publisher, Manning Publications Co., and the book's copyright details.

Uploaded by

leyitoqata
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Explore the full ebook collection and download it now at textbookfull.

com

Functional Programming in C#: How to write better


C# code 1st Edition Enrico Buonanno

https://textbookfull.com/product/functional-programming-in-
c-how-to-write-better-c-code-1st-edition-enrico-buonanno/

OR CLICK HERE

DOWLOAD EBOOK

Browse and Get More Ebook Downloads Instantly at https://textbookfull.com


Click here to visit textbookfull.com and download textbook now
Your digital treasures (PDF, ePub, MOBI) await
Download instantly and pick your perfect format...

Read anywhere, anytime, on any device!

Functional Python Programming: Use a functional approach


to write succinct, expressive, and efficient Python code,
3rd Edition Lott
https://textbookfull.com/product/functional-python-programming-use-a-
functional-approach-to-write-succinct-expressive-and-efficient-python-
code-3rd-edition-lott/
textbookfull.com

Effective C An introduction to professional C programming


1st Edition Robert C. Seacord

https://textbookfull.com/product/effective-c-an-introduction-to-
professional-c-programming-1st-edition-robert-c-seacord/

textbookfull.com

Learn C++ by Example: Covers Versions 11 to 23 (Final


Release) 1 / converted Edition Frances Buontempo

https://textbookfull.com/product/learn-c-by-example-covers-
versions-11-to-23-final-release-1-converted-edition-frances-buontempo/

textbookfull.com

Introduction to Programming with C 1st Edition Nhce

https://textbookfull.com/product/introduction-to-programming-
with-c-1st-edition-nhce/

textbookfull.com
Modern C++ for Absolute Beginners: A Friendly Introduction
to C++ Programming Language and C++11 to C++20 Standards
1st Edition Slobodan Dmitrovi■
https://textbookfull.com/product/modern-c-for-absolute-beginners-a-
friendly-introduction-to-c-programming-language-
and-c11-to-c20-standards-1st-edition-slobodan-dmitrovic/
textbookfull.com

C Programming Complete Guide to Learn the Basics of C


Programming in 7 days 2nd Edition Xavier S Martin

https://textbookfull.com/product/c-programming-complete-guide-to-
learn-the-basics-of-c-programming-in-7-days-2nd-edition-xavier-s-
martin/
textbookfull.com

Functional Programming in JavaScript How to improve your


JavaScript programs using functional techniques First
Edition Luis Atencio
https://textbookfull.com/product/functional-programming-in-javascript-
how-to-improve-your-javascript-programs-using-functional-techniques-
first-edition-luis-atencio/
textbookfull.com

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/
textbookfull.com

101 Challenges In C Programming 1st Edition Yashavant


Kanetkar

https://textbookfull.com/product/101-challenges-in-c-programming-1st-
edition-yashavant-kanetkar/

textbookfull.com
Functional Programming in C#: How to
write better C# code
Enrico Buonanno
Copyright
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: [email protected]

©2018 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.


20 Baldwin Road
PO Box 761
Shelter Island, NY 11964

Development editor: Marina Michaels


Technical development editor: Joel Kotarski
Review editor: Aleksandar Dragosavljević
Project editor: Kevin Sullivan
Copyeditor: Andy Carroll
Proofreader: Melody Dolab
Technical proofreaders: Paul Louth, Jürgen Hoetzel
Typesetter: Gordan Salinovic
Cover designer: Leslie Haimes
Cartoons: Viseslav Radović,
Richard Sheppard
Graphic illustrations: Chuck Larson

ISBN 9781617293955

Printed in the United States of America

1 2 3 4 5 6 7 8 9 10 – EBM – 22 21 20 19 18 17
Dedication
To the little monkey...
Brief Table of Contents
Copyright

Brief Table of Contents

Table of Contents

Preface

Acknowledgments

About this Book

1. Core concepts

Chapter 1. Introducing functional programming

Chapter 2. Why function purity matters

Chapter 3. Designing function signatures and types

Chapter 4. Patterns in functional programming

Chapter 5. Designing programs with function composition

2. Becoming functional

Chapter 6. Functional error handling

Chapter 7. Structuring an application with functions

Chapter 8. Working effectively with multi-argument functions

Chapter 9. Thinking about data functionally

Chapter 10. Event sourcing: a functional approach to persistence

3. Advanced techniques

Chapter 11. Lazy computations, continuations, and the beauty of monadic composition

Chapter 12. Stateful programs and stateful computations

Chapter 13. Working with asynchronous computations

Chapter 14. Data streams and the Reactive Extensions

Chapter 15. An introduction to message-passing concurrency

Epilogue: what next?


Inverted chapter dependency graph

The core functions of FP

Index

List of Figures

List of Tables

List of Listings
Table of Contents
Copyright

Brief Table of Contents

Table of Contents

Preface

Acknowledgments

About this Book

1. Core concepts

Chapter 1. Introducing functional programming

1.1. What is this thing called functional programming?

1.1.1. Functions as first-class values

1.1.2. Avoiding state mutation

1.1.3. Writing programs with strong guarantees

1.2. How functional a language is C#?

1.2.1. The functional nature of LINQ 1.2.2.

Functional features in C# 6 and C# 7 1.2.3.

A more functional future for C#?

1.3. Thinking in functions

1.3.1. Functions as maps

1.3.2. Representing functions in C#

1.4. Higher-order functions

1.4.1. Functions that depend on other functions

1.4.2. Adapter functions

1.4.3. Functions that create other functions

1.5. Using HOFs to avoid duplication

1.5.1. Encapsulating setup and teardown into a HOF


1.5.2. Turning the using statement into a HOF

1.5.3. Tradeoffs of HOFs

1.6. Benefits of functional programming

Exercises

Summary

Chapter 2. Why function purity matters

2.1. What is function purity?

2.1.1. Purity and side effects

2.1.2. Strategies for managing side effects

2.2. Purity and concurrency

2.2.1. Pure functions parallelize well

2.2.2. Parallelizing impure functions

2.2.3. Avoiding state mutation

2.3. Purity and testability

2.3.1. In practice: a validation scenario

2.3.2. Bringing impure functions under test

2.3.3. Why testing impure functions is hard

2.3.4. Parameterized unit tests

2.3.5. Avoiding header interfaces

2.4. Purity and the evolution of computing

Exercises

Summary

Chapter 3. Designing function signatures and types

3.1. Function signature design

3.1.1. Arrow notation

3.1.2. How informative is a

signature?3.2. Capturing data with data

objects
3.2.1. Primitive types are often not specific enough

3.2.2. Constraining inputs with custom types 3.2.3.

Writing “honest” functions

3.2.4. Composing values with tuples and objects

3.3. Modeling the absence of data with Unit

3.3.1. Why void isn’t ideal

3.3.2. Bridging the gap between Action and Func with Unit

3.4. Modeling the possible absence of data with Option

3.4.1. The bad APIs you use every day

3.4.2. An introduction to the Option type

3.4.3. Implementing Option

3.4.4. Gaining robustness by using Option instead of null

3.4.5. Option as the natural result type of partial functions

Exercises

Summary

Chapter 4. Patterns in functional programming

4.1. Applying a function to a structure’s inner values

4.1.1. Mapping a function onto a sequence 4.1.2.

Mapping a function onto an Option 4.1.3. How

Option raises the level of abstraction 4.1.4.

Introducing functors

4.2. Performing side effects with ForEach

4.3. Chaining functions with Bind

4.3.1. Combining Option-returning functions

4.3.2. Flattening nested lists with Bind 4.3.3.

Actually, it’s called a monad

4.3.4. The Return function


4.3.5. Relation between functors and monads 4.4.

Filtering values with Where

4.5. Combining Option and IEnumerable with Bind

4.6. Coding at different levels of abstraction

4.6.1. Regular vs. elevated values

4.6.2. Crossing levels of abstraction

4.6.3. Map vs. Bind, revisited

4.6.4. Working at the right level of abstraction

Exercises

Summary

Chapter 5. Designing programs with function composition

5.1. Function composition

5.1.1. Brushing up on function composition

5.1.2. Method chaining

5.1.3. Composition in the elevated world

5.2. Thinking in terms of data flow

5.2.1. Using LINQ’s composable API

5.2.2. Writing functions that compose well

5.3. Programming workflows

5.3.1. A simple workflow for validation

5.3.2. Refactoring with data flow in mind

5.3.3. Composition leads to greater flexibility

5.4. An introduction to functional domain modeling

5.5. An end-to-end server-side workflow

5.5.1. Expressions vs. statements

5.5.2. Declarative vs. imperative

5.5.3. The functional take on layering


Exercises

Summary

2. Becoming functional

Chapter 6. Functional error handling

6.1. A safer way to represent outcomes

6.1.1. Capturing error details with Either

6.1.2. Core functions for working with Either

6.1.3. Comparing Option and Either

6.2. Chaining operations that may fail 6.3.

Validation: a perfect use case for Either

6.3.1. Choosing a suitable representation for errors

6.3.2. Defining an Either-based API

6.3.3. Adding validation logic

6.4. Representing outcomes to client applications

6.4.1. Exposing an Option-like interface

6.4.2. Exposing an Either-like interface

6.4.3. Returning a result DTO

6.5. Variations on the Either theme

6.5.1. Changing between different error representations

6.5.2. Specialized versions of Either

6.5.3. Refactoring to Validation and Exceptional

6.5.4. Leaving exceptions behind?

Exercises

Summary

Chapter 7. Structuring an application with functions

7.1. Partial application: supplying arguments piecemeal

7.1.1. Manually enabling partial application


7.1.2. Generalizing partial application

7.1.3. Order of arguments matters

7.2. Overcoming the quirks of method resolution

7.3. Curried functions: optimized for partial application

7.4. Creating a partial-application-friendly API

7.4.1. Types as documentation

7.4.2. Particularizing the data access function

7.5. Modularizing and composing an application

7.5.1. Modularity in OOP

7.5.2. Modularity in FP

7.5.3. Comparing the two approaches

7.5.4. Composing the application

7.6. Reducing a list to a single value

7.6.1. LINQ’s Aggregate method

7.6.2. Aggregating validation results

7.6.3. Harvesting validation errors

Exercises

Summary

Chapter 8. Working effectively with multi-argument functions

8.1. Function application in the elevated world

8.1.1. Understanding applicatives

8.1.2. Lifting functions

8.1.3. An introduction to property-based testing

8.2. Functors, applicatives, monads

8.3. The monad laws

8.3.1. Right identity

8.3.2. Left identity


8.3.3. Associativity

8.3.4. Using Bind with multi-argument functions

8.4. Improving readability by using LINQ with any monad

8.4.1. Using LINQ with arbitrary functors

8.4.2. Using LINQ with arbitrary monads

8.4.3. let, where, and other LINQ clauses

8.5. When to use Bind vs. Apply

8.5.1. Validation with smart constructors

8.5.2. Harvesting errors with the applicative flow

8.5.3. Failing fast with the monadic flow

Exercises

Summary

Chapter 9. Thinking about data functionally

9.1. The pitfalls of state mutation

9.2. Understanding state, identity, and change

9.2.1. Some things never change

9.2.2. Representing change without mutation

9.3. Enforcing immutability

9.3.1. Immutable all the way down

9.3.2. Copy methods without boilerplate?

9.3.3. Leveraging F# for data types

9.3.4. Comparing strategies for immutability: an ugly contest

9.4. A short introduction to functional data structures

9.4.1. The classic functional linked list

9.4.2. Binary trees

Exercises

Summary
Chapter 10. Event sourcing: a functional approach to persistence

10.1. Thinking functionally about data storage

10.1.1. Why data storage should be append-only

10.1.2. Relax, and forget about storing state

10.2. Event sourcing basics

10.2.1. Representing events

10.2.2. Persisting events

10.2.3. Representing state

10.2.4. An interlude on pattern matching

10.2.5. Representing state transitions

10.2.6. Reconstructing the current state from past events

10.3. Architecture of an event-sourced system

10.3.1. Handling commands

10.3.2. Handling events

10.3.3. Adding validation

10.3.4. Creating views of the data from events

10.4. Comparing different approaches to immutable storage

10.4.1. Datomic vs. Event Store

10.4.2. How event-driven is your

domain?Summary

3. Advanced techniques

Chapter 11. Lazy computations, continuations, and the beauty of monadic composition

11.1. The virtue of laziness

11.1.1. Lazy APIs for working with Option

11.1.2. Composing lazy computations

11.2. Exception handling with Try

11.2.1. Representing computations that may fail


11.2.2. Safely extracting information from a JSON object

11.2.3. Composing computations that may fail

11.2.4. Monadic composition: what does it mean?

11.3. Creating a middleware pipeline for DB access

11.3.1. Composing functions that perform setup/teardown

11.3.2. A recipe against the pyramid of doom

11.3.3. Capturing the essence of a middleware function

11.3.4. Implementing the query pattern for middleware

11.3.5. Adding middleware that times the operation

11.3.6. Adding middleware that manages a DB transaction

Summary

Chapter 12. Stateful programs and stateful computations

12.1. Programs that manage state

12.1.1. Maintaining a cache of retrieved resources

12.1.2. Refactoring for testability and error handling

12.1.3. Stateful computations

12.2. A language for generating random data

12.2.1. Generating random integers

12.2.2. Generating other primitives

12.2.3. Generating complex structures

12.3. A general pattern for stateful computations

Summary

Chapter 13. Working with asynchronous computations

13.1. Asynchronous computations

13.1.1. The need for asynchrony

13.1.2. Representing asynchronous operations with Task

13.1.3. Task as a container for a future value


13.1.4. Handling failure

13.1.5. An HTTP API for currency conversion

13.1.6. If it fails, try a few more times

13.1.7. Running asynchronous operations in parallel

13.2. Traversables: working with lists of elevated values

13.2.1. Validating a list of values with monadic Traverse

13.2.2. Harvesting validation errors with applicative Traverse

13.2.3. Applying multiple validators to a single value 13.2.4.

Using Traverse with Task to await multiple results 13.2.5.

Defining Traverse for single-value structures

13.3. Combining asynchrony and validation (or any other two monadic effects)

13.3.1. The problem of stacked monads

13.3.2. Reducing the number of effects

13.3.3. LINQ expressions with a monad stack

Summary

Chapter 14. Data streams and the Reactive Extensions

14.1. Representing data streams with IObservable

14.1.1. A sequence of values in time

14.1.2. Subscribing to an IObservable

14.2. Creating IObservables

14.2.1. Creating a timer

14.2.2. Using Subject to tell an IObservable when it should signal

14.2.3. Creating IObservables from callback-based subscriptions

14.2.4. Creating IObservables from simpler structures

14.3. Transforming and combining data streams

14.3.1. Stream transformations

14.3.2. Combining and partitioning streams


14.3.3. Error handling with IObservable

14.3.4. Putting it all together

14.4. Implementing logic that spans multiple events

14.4.1. Detecting sequences of pressed keys

14.4.2. Reacting to multiple event sources

14.4.3. Notifying when an account becomes overdrawn

14.5. When should you use IObservable?

Summary

Chapter 15. An introduction to message-passing concurrency

15.1. The need for shared mutable state

15.2. Understanding message-passing concurrency

15.2.1. Implementing agents in C#

15.2.2. Getting started with agents

15.2.3. Using agents to handle concurrent requests

15.2.4. Agents vs. actors

15.3. Functional APIs, agent-based implementations

15.3.1. Agents as implementation details

15.3.2. Hiding agents behind a conventional API

15.4. Message-passing concurrency in LOB applications

15.4.1. Using an agent to synchronize access to account data

15.4.2. Keeping a registry of accounts

15.4.3. An agent is not an object

15.4.4. Putting it all together

Summary Epilogue:

what next?

Inverted chapter dependency graph

The core functions of FP


Index

List of Figures

List of Tables

List of Listings
Preface
Today, functional programming (FP) is no longer brooding in the research departments of
universities; it has become an important and exciting part of mainstream programming. The
majority of the languages and frameworks created in the last decade are functional, leading some
to predict that the future of programming is functional. Meanwhile, popular object-oriented
languages like C# and Java see the introduction of more functional features with every new
release, enabling a multiparadigm programming style.

And yet, adoption in the C# community has been slow. Why is this so? One reason, I believe, is
the lack of good literature:

Most FP literature is written in and for functional languages, especially Haskell. For
developers with a background in OOP, this poses a programming-language barrier to
learning the concepts. Even though many of the concepts apply to a multiparadigm
language like C#, learning a new paradigm and a new language at once is a tall order.
Even more importantly, most of the books in the literature tend to illustrate functional
techniques and concepts with examples from the domains of mathematics or computer
science. For the majority of programmers who work on line-of-business (LOB)
applications day in and day out, this creates a domain gap and leaves them wondering how
relevant these techniques may be for real-world applications.

These shortcomings posed major stumbling blocks in my own path to learning FP. After tossing
aside the n-th book that explained something known as currying by showing how the add
function can be curried with the number 3, creating a function that can add 3 to any number (can
you think of any application where this would be even remotely useful?), I decided to pursue my
own research path. This involved learning half a dozen functional languages (some better than
others), and seeing which concepts from FP could be effectively applied in C# and in the kind of
applications most developers are paid to write, and it culminated in the writing of this book.

This book bridges the language gap for C# developers by showing how you can leverage
functional techniques in this language. It also bridges the domain gap by showing how these
techniques can be applied to typical business scenarios. I take a pragmatic approach and cover
functional techniques to the extent that they’re useful in a typical LOB application scenario, and
dispense with most of the theory behind FP.

Ultimately, you should care about FP because it gives you the following:

Power— This simply means that you can get more done with less code. FP raises the level
of abstraction, allowing you to write high-level code while freeing you from low-level
technicalities that add complexity but no value.
Safety— This is especially true when dealing with concurrency. A program written in the
imperative style may work well in a single-threaded implementation but cause all sorts of
bugs when concurrency comes in. Functional code offers much better guarantees in
concurrent scenarios, so it’s only natural that we’re seeing a surge of interest in FP in the
era of multicore processors.
Clarity— We spend more time maintaining and consuming existing code than writing new
code, so it’s important that our code be clear and intention-revealing. As you learn to think
functionally, achieving this clarity will become more natural.
If you’ve been programming in an object-oriented style for some time, it may take a bit of effort
and willingness to experiment before the concepts in this book come to fruition. To make sure
learning FP is an enjoyable and rewarding process, I have two recommendations:

Be patient— You may have to read some sections more than once. You may put the book
down for a few weeks and find that when you pick it up again, something that seemed
obscure suddenly starts to make sense.
Experiment in code— You won’t learn unless you get your hands dirty. The book
provides many examples and exercises, and many of the code snippets can be tested in the
REPL.

Your colleagues may be less eager to explore than you. Expect them to protest your adoption of
this new style and to look perplexed at your code and say things like, “why not just do x?”
(where x is boring, obsolete, and usually harmful). Don’t discuss. Just sit back and watch them
eventually turn around and use your techniques to solve issues they run into again and again.
Acknowledgments
I’d like to thank Paul Louth, who not only provided inspiration through his LanguageExt library—
from which I borrowed many good ideas—but who also graciously reviewed the book at various
stages.

Manning’s thorough editorial process ensured that the quality of this book is infinitely better than
if I had been left to my own means. For this, I’d like to thank the team that collaborated on the
book, including Mike Stephens, development editor Marina Michaels, technical editor Joel
Kotarski, technical proofreader Jürgen Hoetzel, and copyeditor Andy Carroll.

Special thanks to Daniel Marbach and Tamir Dresher for their technical insights, as well as to all
those who took part in the peer reviews, including Alex Basile, Aurélien Gounot, Blair Leduc,
Chris Frank, Daniel Marbach, Devon Burriss, Gonzalo Barba López, Guy Smith, Kofi Sarfo,
Pauli Sutelainen, Russell Day, Tate Antrim, and Wayne Mather.

Thanks to Scott Wlaschin for sharing his articles at http://fsharpforfunandprofit.com, and to the
many other members of the FP community who share their knowledge and enthusiasm through
articles, blogs, and open source.
About this Book
This book aims to show how you can leverage functional techniques in C# to write code that is
concise, elegant, robust, and maintainable.
Who should read this book
This book is for an ambitious breed of developer. You know the C# language and the .NET
framework. You have experience developing real-world applications and are familiar with OOP
concepts, patterns, and best practices. Yet, you’re looking to expand your arsenal by learning
functional techniques so that you can make the most out of C# as a multiparadigm language.

If you’re trying or planning to learn a functional language, this book will also be hugely
valuable, because you’ll learn how to think functionally in a language you’re familiar with.
Changing the way you think is the hard part; once that’s achieved, learning the syntax of any
particular language will be relatively easy.
How this book is organized
The book consists of 15 chapters, divided into 3 parts:

Part 1 covers the basic techniques and principles of functional programming. We’ll start by
looking at what functional programming is and how C# supports programming in a
functional style. We’ll then look at the power of higher-order functions, function purity
and its relation to testability, the design of types and function signatures, and how simple
functions can be composed into complex programs. By the end of part 1, you’ll have a
good feel for what a program written in a functional style looks like and for the benefits
that this style has to offer.
With these basic concepts covered, we’ll pick up some speed in part 2 and move on to
wider-reaching concerns, such as functional error handling, modularizing and composing
an application, and the functional approach to understanding state and representing change.
By the end of part 2, you’ll have acquired a set of tools enabling you to effectively tackle
many programming tasks using a functional approach.
Part 3 will tackle more advanced topics, including lazy evaluation, stateful computations,
asynchrony, data streams, and concurrency. Each chapter in part 3 introduces important
techniques that have the potential to completely change the way you write and think about
software.

You’ll find a more detailed breakdown of the topics in each chapter, and a representation of what
chapters are required before reading any particular chapter, on the inside front cover page.

Coding for real-world applications

The book aims to stay true to real-world scenarios. To do this, many examples deal with practical
tasks such as reading configuration, connecting to a database, validating HTTP requests, and so
on—things you may already know how to do, but you’ll see them with the fresh perspective of
functional thinking.

Throughout the book, I use a long-running example to illustrate how FP can help when writing
LOB applications. For this, I’ve chosen an online banking application for the fictitious Bank of
Codeland (BOC)—naff, I know, but at least it has the obligatory three-letter acronym. Because
most people have access to an online banking facility, it should be easy to imagine the required
functionality and plain to see how the problems discussed are relevant to real-world applications.

I also use scenarios to illustrate how to solve typical programming problems in a functional style.
The constant back and forth between practical examples and FP concepts will hopefully help
bridge the gap between theory and practice—something I found wanting in the existing
literature, as I mentioned.

Leveraging functional libraries

A language like C# may have functional features, but to fully leverage these you’ll often use
libraries that facilitate common tasks. Microsoft has provided several libraries that facilitate
programming in a functional style, including these:

System.Linq—Yes, in case you didn’t know, it’s a functional library! I assume you’re
familiar with it, given that it’s such an important part of .NET.
System.Collections.Immutable—This is a library of immutable collections, which we’ll start
using in chapter 9.
System.Reactive—This is an implementation of the Reactive Extensions for .NET, allowing
you to work with data streams, which we’ll discuss in chapter 14.

This still leaves out plenty of other important types and functions that are staples of FP. As a
result, several independent developers have written libraries to fill those gaps. To date, the most
complete of these is LanguageExt, a library written by Paul Louth to improve the C# developer’s
experience when coding functionally.[1]
1

LanguageExt is open source and available on GitHub and NuGet:


https://github.com/louthy/language-ext.

In the book, I don’t use LanguageExt directly; instead, I’ll show you how I developed my own
library of functional utilities, called LaYumba.Functional, even though it largely overlaps with
LanguageExt. This is pedagogically more useful, for several reasons:

The code will remain stable after the book is published.


You get to look under the hood and see that powerful functional constructs are deceptively
simple to define.
You can concentrate on the essentials: I’ll show you the constructs in their purest form, so
that you won’t be distracted by the details and edge cases that a full-fledged library
addresses.
Code conventions and downloads
The code samples are in C# 7, and for the most part are compatible with C# 6. Language features
specifically introduced in C# 7 are only used in chapter 10 and beyond (and in a couple of
samples in section 1.2 that explicitly showcase C# 7).

You can execute many of the shorter snippets of code in a REPL, thereby gaining hands-on
practice with immediate feedback. The more extended examples are available for download at
https://github.com/la-yumba/functional-csharp-code, along with the exercises’ setup and
solutions.

Code listings in the book focus on the topic being discussed, and therefore may omit
namespaces, using statements, trivial constructors, or sections of code that appeared in a previous
listing and remain unchanged. If you’d like to see the full, compiling version of a listing, you’ll
find it in the code repository: https://github.com/la-yumba/functional-csharp-code.
Book forum
Purchase of Functional Programming in C# includes free access to a private web forum run by
Manning Publications where you can make comments about the book, ask technical questions,
and receive help from the author and from other users. To access the forum, go to
https://forums.manning.com/forums/functional-programming-in-c-sharp. You can also learn
more about Manning’s forums and the rules of conduct at
https://forums.manning.com/forums/about.

Manning’s commitment to our readers is to provide a venue where a meaningful dialogue


between individual readers and between readers and the author can take place. It is not a
commitment to any specific amount of participation on the part of the author, whose contribution
to the forum remains voluntary (and unpaid). We suggest you try asking the author some
challenging questions lest his interest stray! The forum and the archives of previous discussions
will be accessible from the publisher’s website as long as the book is in print.
About the author
Enrico Buonanno obtained an MS in Computer Science at Columbia University in 2001 and has
been working as a software developer and architect since. He’s worked on mission-critical
projects for prestigious companies in FinTech (including the Bank for International Settlements,
Barclays, and UBS) and other technology-driven businesses.
Part 1. Core concepts
In this part we’ll cover the basic techniques and principles of functional programming.

Chapter 1 starts by looking at what functional programming is, and how C# supports
programming in a functional style. It then delves deeper into higher-order functions, a
fundamental technique of FP.

Chapter 2 explains what pure functions are, why purity has important implications for a
function’s testability, and why pure functions lend themselves well to parallelization and other
optimizations.

Chapter 3 deals with principles for designing types and function signatures—things you thought
you knew but that receive a breath of fresh air when looked at from a functional perspective.

Chapter 4 introduces some of the core functions of FP: Map, Bind, ForEach, and Where (filter). These
functions provide the basic tools for interacting with the most common data structures in FP.

Chapter 5 shows how functions can be chained into pipelines that capture the workflows of your
program. It then widens the scope to developing a whole use case in a functional style.

By the end of part 1, you’ll have a good feel for what a program written in a functional style
looks like, and you’ll understand the benefits that this style has to offer.
Exploring the Variety of Random
Documents with Different Content
rauhalliseksi, näimme hänen kasvojensa muuttuvan ja odotimme
hänen loppuansa. Hän eli vielä useita tunteja ja kuoli myöhään
iltapäivällä. En tuntenut enää mitään muuta kuin tylsää tuskaa ja
syvää väsymystä, istuin kuumin, kuivin silmin ja nukahdin illalla
kuolinvuoteen ääressä istuessani.

6.

Että elämä on vaikeata kestää, olin jo aikaisemmin toisinaan


hämärästi tuntenut. Nyt oli minulla uutta syytä mietiskelyyn. Tähän
saakka ei minulta enää milloinkaan ole haihtunut mielestäni se
vastakohtaisuuksien tunne, joka tuohon tietoisuuteen sisältyi. Sillä
elämäni on ollut köyhää ja vaivoista runsasta ja näyttää kuitenkin
muista, ja monasti minusta itsestänikin, rikkaalta ja ihanalta. Minusta
tuntuu ihmiselämä kuin synkältä, surulliselta yöltä, joka ei olisi
kestettävissä, ellei siellä täällä välkähtelisi salamoita, joiden äkillinen
kirkkaus on niin lohdullinen ja ihmeellinen, että nuo hetket voivat
pyyhkäistä pois ja hyvittää vuosikausien pimeän.

Synkkyys, lohduton pimeys, se on jokapäiväisen elämän hirveä


kiertokulku. Minkä vuoksi noustaan aamulla, syödään, juodaan,
käydään jälleen nukkumaan? Lapsi, terve, nuori ihminen, villi, eläin
ei kärsi tästä mitättömien asioiden kiertokulusta. Joka ei sairasta
ajattelemista, sitä ilahduttaa aamulla nouseminen, syöminen ja
juominen, hän löytää siitä tyydytystä eikä halua muuta. Mutta se,
joka ei tyydy tähän asioiden luonnolliseen kulkuun, etsii päivän
kuluessa ahnaasti todellisen elämän hetkiä, joiden välkähdys tekee
onnelliseksi ja sammuttaa tunteen ajasta sekä ajatukset kaiken
päämäärästä ja tarkotuksesta. Näitä silmänräpäyksiä voi kutsua
luomisen hetkiksi, koska näyttää siltä, että ne tuovat mukanaan
tunteen yhteydestä Luojan kanssa, koska tuollaisina hetkinä kaikki,
myöskin muuten satunnainen, tuntuu tarkotetulta. Se on samaa,
mitä mystikot nimittävät yhdistymiseksi jumalan kanssa. Ehkä johtuu
näiden silmänräpäysten häikäisevästä rikkaudesta, että kaikki muut
tuntuvat niin synkiltä, ehkä johtuu näiden hetkien vapaasta,
lumotusta keveydestä, että muu elämä tuntuu niin vaikealta, maassa
matavalta ja masentavalta. En sitä tiedä, en ole ajattelemisessani ja
mietiskelyssäni päässyt pitkälle. Sen kuitenkin tiedän, että jos on
olemassa autuus, paratiisi, täytyy sen olla tuollaisten
silmänräpäysten häiriintymätöntä jatkumista; ja jos tämän autuuden
voi saavuttaa tuskassa kärsimisen ja kirkastumisen avulla, niin ei
mikään kärsimys ole niin suuri, että sitä pitäisi paeta.

Muutamia päiviä isäni kuoleman jälkeen harhailin vielä


huumautuneena ja henkisesti tylsänä jouduin eräällä
päämäärättömällä kävelyretkellä jollekulle esikaupungin
puutarhakadulle. Pienet sievät talot herättivät minussa puolihämäriä
muistoja, joita koetin mielessäni virkistää, kunnes tunsin vanhan
opettajani talon ja puutarhan, hänen, joka muutamia vuosia sitten
oli koettanut minua kääntää teosofien uskoon. Astuin sisään, hän
astui minua vastaan, tunsi minut ja vei minut ystävällisesti
huoneeseensa, missä mieluisa tupakansavun tuoksu leijaili kirjojen ja
kukkamaljakkojen yläpuolella.

"Miten voitte?" kysyi herra Lohe. "Ah, olettehan kadottanut isänne!


Murheelliselta näytättekin. Koskiko se teihin niin kovasti?"

"Ei", sanoin. "Isäni kuolema olisi koskenut minuun kovemmin, jos


välimme vielä olisi ollut yhtä vieras. Mutta viime käyntini aikana tuli
meistä hyvät ystävät ja minä pääsin vapaaksi tuosta kiusallisesta
syyllisyyden tunteesta, jota tuntee hyviä vanhempia kohtaan niin
kauvan kuin vastaanottaa heiltä enemmän rakkautta kuin itse voi
antaa."

"Se ilahduttaa minua."

"Miten on teidän teosofianne laita? Tahtoisin mielelläni kuulla teiltä


jotain, sillä minun laitani on huonosti."

"Mitä teiltä sitten puuttuu?"

"Kaikkea. En voi kuolla enkä elää. Kaikki tuntuu minusta väärältä


ja tyhmältä."

Herra Lohen lempeät, tyytyväiset puutarhurinkasvot vetäytyivät


säälivään hymyyn. Minun täytyy tunnustaa, että juuri nämät hyvät,
jotenkin lihavat kasvot olivat vaikuttaneet minuun ikävästi; en
myöskään suinkaan odottanut häneltä ja hänen viisaudeltaan mitään
lohdutusta. Tahdoin vain saada kuulla hänen puhuvan, todistavan
viisautensa voimattomaksi ja rangaista häntä tyytyväisyydestään ja
optimistisesta uskostaan.

Mutta mies ei ollut lainkaan niin itseensätyytyväinen ja kaavoihinsa


piintynyt, kuin olin luullut. Hän katsoi minua lempeästi silmiin,
vilpittömästi murheissaan, ja pudisti surumielisesti vaaleata
päätänsä.

"Olette sairas, hyvä ystäväni," sanoi hän päättävästi. "Ehkä on se


vain ruumiillista laatua; silloin on se pian autettu. Silloin teidän
täytyy mennä maalle, tehdä kovasti työtä ja olla syömättä lihaa.
Mutta luulen, että syy on toinen. Te olette mieleltänne sairas?"
"Niinkö luulette?"

"Niin. Teillä on tauti, joka paha kyllä on muodissa ja jota joka


päivä tapaa henkisesti kyvykkäämmissä ihmisissä. Lääkärit eivät
luonollisesti tiedä mitään. Se on sukua moral insanity'n kanssa ja sitä
voisi myöskin nimittää individualismiksi tai luulotelluksi
yksinäisyydeksi. Nykyaikaiset kirjat ovat täynnä sitä. Mieleenne on
hiipinyt se kuvittelu, että olette yksin, ettei yksikään ihminen liikuta
teitä ja ettei kukaan ymmärrä teitä. Eikö ole niin?"

"Suunnilleen kyllä", myönsin minä kummastuneena.

"Näettekös, sille, jolla tauti kerran on, riittää pari pettymystä


todistamaan, ettei hänen ja muiden ihmisten välillä ole ylipäänsä
mitään suhteita, korkeintaan väärinkäsityksiä, ja että jokainen
ihminen oikeastaan vaeltaa ehdottomassa yksinäisyydessä, ei
koskaan voi tulla toisten taholta oikein ymmärretyksi eikä jakaa
heidän kanssaan mitään yhteistä. Sattuu myöskin, että sellaiset
sairaat tulevat ylpeiksi ja pitävät kaikkia terveitä, jotka vielä voivat
ymmärtää ja rakastaa toisiansa, laumaelukkoina. Jos tämä sairaus
tulisi yleiseksi, täytyisi ihmiskunnan kuolla. Mutta se on tavattavissa
vain keski-Europassa ja korkeammissa säädyissä. Nuorissa ihmisissä
se on parantuvaa, kuuluupa se nuoruuden välttämättömiin
kehityskipuihin."

Hänen ivalliselta tuntuva dosentin-äänensä harmitti minua hiukan.


Kun ei hän nähnyt minun hymyilevän eikä millään tavalla ryhtyvän
puolustamaan itseäni, palasi huolestunut ilme hänen kasvoihinsa
jälleen.

"Suokaa anteeksi", sanoi hän ystävällisesti. "Teissä on itse tauti,


eikä sen suosittu irvikuva. Mutta on todella olemassa parannuskeino.
On kuvittelua ettei muka ole olemassa mitään siltaa Minun ja Sinun
välillä, että jokaisen täytyy vaeltaa yksinäisenä ja ymmärrystä vailla.
Päinvastoin, se, mitä ihmisellä on yhteistä on paljoa enemmän ja
tärkeämpää, kuin mitä jokaisella on erikseen ja missä hän eroaa
muista."

"Se on mahdollista", sanoin minä. "Mutta mitä hyödyttää minua


sen tietäminen? En ole filosofi, eikä kärsimykseni ole siinä, etten voi
löytää totuutta. En halua tulla viisaaksi ajattelijaksi, vaan
yksinkertaisesti elää hiukan tyytyväisemmästi ja keveämmästi."

"No, koettakaa! Teidän ei pidä tutkia kirjoja ja hautoa teorioja.


Mutta lääkäriin täytyy teidän uskoa niin kauan kuin olette sairas.
Tahdotteko tehdä sen?"

"Koettaa tahdon sitä mielelläni."

"Hyvä. Jos olisitte ruumiillisesti sairas ja lääkäri neuvoisi teitä


ottamaan kylpyjä tai juomaan lääkkeitä, niin ette kenties ymmärtäisi,
miksi minkin keinon pitäisi auttaa, mutta te koettaisitte sitä kuitenkin
kerran. Tehkää samoin siihen nähden, mitä nyt teille neuvon!
Harjotelkaa joku aika enemmän ajattelemaan muita kuin itseänne!
Se on ainoa parantumiskeino."

"Mutta miten on minun meneteltävä? Jokainen ajattelee ensin


itseänsä."

"Se täytyy teidän voittaa. Teidän täytyy päästä jonkunlaiseen


välinpitämättömyyteen oman hyvänne suhteen. Teidän täytyy oppia
ajattelemaan: mitä minusta! Siihen on vain yksi keino: teidän täytyy
oppia rakastamaan jotakuta niin, että hänen parhaansa on teille
tärkeämpi kuin omanne. Mutta minä en tarkota, että teidän pitäisi
rakastua! Se olisi aivan päinvastaista!"

"Ymmärrän. Mutta kenen suhteen pitäisi minun sitten koetella


sitä?"

"Alottakaa läheltä, ystävistänne, sukulaisistanne. Ajatelkaa


esimerkiksi äitiänne. Hän on kadottanut paljon, hän on nyt yksin ja
tarvitsee lohdutusta. Pitäkää huolta hänestä, lähestykää häntä ja
koettakaa tulla hänelle jonkun arvoiseksi!"

"Emme ymmärrä toisiamme oikein hyvin, äiti ja minä. Se on oleva


vaikeata."

"Niin, ellei hyvä tahtonne ylety sen pitemmälle, ei se kylläkään tule


luonnistumaan! Teidän ei aina pidä ajatella sitä, että se tai se ei
oikein ymmärrä teitä, ei ole teille aivan oikeudenmukainen. Teidän
täytyy itsenne kerran koettaa ymmärtää muita, tuottaa toisille iloa,
olla toisille oikeudenmukainen! Tehkää se ja alottakaa äidistänne! —
Nähkääs, teidän täytyy sanoa itsellenne: elämä ei kuitenkaan tuota
minulle iloa, oli niin taikka näin, miks'en siis kerran yrittäisi tätä!
Olette kadottanut rakkauden omaan elämäänne, älkää siis sitä
säästäkö, ottakaa päällenne kuorma, luopukaa vähäisestä
mukavuudestanne!"

"Koetan sitä. Olette oikeassa, onhan yhdentekevää, mitä teen,


miksi en tekisi niinkuin te neuvotte?"

Mikä minuun hänen sanoissaan teki voimakkaan vaikutuksen ja


saattoi minut hämmästymään, oli niiden yhtäpitäväisyys sen kanssa,
mitä isäni oli minulle viimeisinä yhdessäolon hetkinämme
ammentanut elämän viisaudestaan: kehotus elämään toisten
hyväksi, eikä ottamaan itseänsä niin vakavalta kannalta! Oppi oli
välittömästi minun tunteilleni vastakkainen, ja se maistui myöskin
hiukan katkismukselta ja rippikoululta, jota minä, niinkuin jokainen
terve nuori ihminen, ajattelin inholla ja ylenkatseella. Mutta
lopultahan ei ollut kysymys mielipiteistä ja maailmankatsomuksista,
vaan aivan käytännöllisestä yrityksestä tehdä raskas elämä
siedettäväksi. Tahdoin yrittää.

Ihmetellen katsoin miestä, jota en milloinkaan ollut ottanut oikein


vakavalta kannalta ja joka nyt oli neuvojanani ja lääkärinäni. Mutta
hänessä näytti todella itsessään olevan jotain rakkaudesta, jota hän
suositteli minulle. Hän näytti ottavan osaa kärsimykseeni ja
tarkottavan minulle vilpittömästi hyvää. Muutenkin olin tuntenut, että
tarvitsin voimakasta parannuskeinoa voidakseni jälleen elää ja
hengittää kuin muut, olin ajatellut yksinäistä elämää vuoristossa tai
rajua työskentelyä, mutta mieluummin noudatin nyt annettua
neuvoa, kun oma kokemukseni ja viisauteni kuitenkin oli lopussa.

Kun ilmotin äidilleni, etten aikonut jättää häntä yksikseen, vaan


toivoin hänen muuttavan minun luokseni asumaan, pudisti hän
surullisesti päätään.

"Mitä ajattelet!" sanoi hän epäävästi. "Se ei käy niin


yksinkertaisesti. Minulla on vanhat tapani enkä voi enää tottua
uusiin, ja sinä tarvitset vapautta etkä saa ottaa minua kuormaksesi."

"Voimmehan sentään koettaa", ehdotin. "Ehkä se käy helpommin


kuin luuletkaan."

Ensi aluksi oli minulla yllin kyllin tekemistä, joka pidätti minua
mietiskelystä ja epätoivosta. Selvitettäväksi oli jäänyt talo ja laaja
liike saatavineen ja velkoineen, selvitettävinä olivat kirjat ja laskut,
rahaa oli saatu ja lainattu, ja nyt oli kysymys, mitä tästä kaikesta
tulisi. Olin tietysti alusta alkaen päättänyt myydä kaiken, mutta se ei
käynyt niin nopeasti; myöskin äiti oli vielä kiinni vanhassa kodissa ja
isän testamentti oli toimeenpantava, mikä tuotti kaikenlaisia mutkia
ja vaikeuksia. Kirjanpitäjän ja notarin täytyi auttaa, päivät ja viikot
kuluivat neuvotteluihin, rahaa ja velkoja koskevaan kirjeenvaihtoon,
suunnitelmiin ja pettymyksiin. Pian en enää tiennyt, miten selviytyä
näistä laskuista ja virallisista muodollisuuksista, annoin notarin
avuksi vielä asianajajan ja jätin heidän huostaansa koko
sekamelskan.

Tämän takia oli minun useasti täytynyt laiminlyödä äitiäni. Koetin


parhaani mukaan tehdä tämän ajan hänelle keveämmäksi, säästin
hänet kaikilta liikeasioilta, luin hänelle ja tein hänen kanssaan
kävelyretkiä. Välistä oli minun työlästä olla tempautumatta irti ja
heittämättä kaikkea siksensä, mutta häpeäntunne ja joku määrä
uteliaisuuttakin pidätti minua kuitenkin.

Äitini ei ajatellut mitään muuta kuin vainajaa; hänen murheensa


ilmeni kuitenkin yksinomaan pienissä, naismaisissa, minulle oudoissa
ja useasti pikkumaisilta tuntuvissa muodoissa. Aluksi piti minun istua
pöydässä isän paikalla, sitten tuntui hänestä siltä, etten kuitenkaan
soveltunut sille sijalle, ja se sai jäädä tyhjäksi. Toisinaan en voinut
tarpeeksi puhua hänelle isästä; sitten hän jälleen kävi äänettömäksi
ja katsoi minuun tuskallisesti joka kerta kun vain mainitsin hänen
nimensäkin. Enimmän kaipasin musiikkia. Olisin antanut paljon siitä,
että olisin tunnin ajan saanut soittaa viulua, mutta siihen sain luvan
vasta useita viikkoja jälkeenpäin, ja vielä silloinkin hän huokaili ja piti
sitä sopimattomana. Ilottomilla yrityksilläni lähestyä häntä ja voittaa
hänen ystävyytensä ei ollut menestystä.
Kärsin tästä useasti ja olin heittämäisilläni yritykseni sikseen,
mutta hillitsin itseni yhä uudelleen ja koetin tottua tähän. Oma
elämäni oli mennyt pirstoiksi; vain harvoin kaikui mennyt korviini
synkkänä huminana, kun unessa kuulin Gertrudin äänen tai jonakuna
tyhjänä hetkenä tahtomattani mieleeni lennähti palasia oopperastani.
Kun matkustin R:iin, muuttaakseni asunnostani, tuntui kaikki siellä
oleva etääntyneen minusta vuosikausien päähän. Kävin tapaamassa
vain Teiseriä, joka uskollisesti auttoi minua. Gertrudia en uskaltanut
kysyäkään.

Äitini itsepäistä erillään pysyttäytymistä vastaan, joka aikaa


myöten alkoi käydä minulle liian painostavaksi, täytyi minun
vähitellen alkaa säännöllinen, salainen taistelu. Jos avoimesti pyysin
häntä sanomaan, mitä hän toivoi ja missä suhteessa hän
mahdollisesti oli minuun tyytymätön, niin hyväili hän vain surullisesti
hymyillen kättäni ja sanoi: "Älä siitä huoli, lapseni! Olen jo vanha
mummo." Aloin silloin omin päin tehdä tutkimuksiani, laiminlyömättä
edes kysellä kirjanpitäjältä ja palvelusväeltä.

Yhtä ja toista sainkin tietooni. Pääasia oli tämä: äidilläni oli


kaupungissa yksi ainoa läheinen sukulainen ja ystävätär, muuan
serkku, joka oli naimaton ja eli muuten aivan eristettyä elämää,
mutta oli äitini kanssa sangen läheinen ystävä. Tämä neiti Schniebel
ei ollut lainkaan pitänyt isästänikään, mutta minua kohtaan hän tunsi
aivan vastenmielisyyttä, niin ettei hän vähään aikaan enää ensinkään
ollut käynyt talossa. Äitini oli aikaisemmin luvannut ottaa hänet
luoksensa asumaan, jos hän eläisi isää kauemmin, ja tämän hänen
toiveensa näytti minun kotiinjäämiseni tekevän tyhjäksi. Kun
vähitellen olin saanut tietooni tämän, kävin tapaamassa vanhaa
neitiä ja koetin esiintyä niin kohteliaasti kuin suinkin. Tämä pienten
juonittelujen ja kummallisuuksien maailma oli minulle uusi ja miltei
huvitti minua. Minun onnistui saada neiti jälleen tulemaan kotiimme,
ja huomasin, että äiti oli minulle siitä kiitollinen. Tosin molemmat nyt
liittyivät yhteen tehdäkseen tyhjäksi minun toivomani vanhan talon
myymisen, mikä heille onnistuikin. Nyt tuli vanhan neidin pyrintöjen
päämääräksi vallata minun paikkani kotona ja saavuttaa se kauan
toivomansa vanhuudensija, jolle pääsemässä minä olin hänen
esteenään. Olisi ollut kyllin tilaa sekä hänelle että minulle, mutta hän
ei hyväksynyt mitään isäntää rinnallaan ja kieltäytyi muuttamasta
meille. Sen sijaan hän kyllä muuten juoksi siellä ahkerasti, osasi
monella tavalla tehdä itsensä äidille tarpeelliseksi, kohteli minua
valtioviisaasti pelättynä suurvaltana ja hankki itselleen taloudellisissa
seikoissa neuvonantajan aseman, jota minä en voinut häneltä
kiistää.

Äitirukka ei asettunut kumpaisenkaan puolelle. Hän oli väsynyt ja


kärsi kovasti muuttuneista olosuhteista. Miten kovin hän kaipasi isää,
huomasin vasta vähitellen. Kerran tapasin hänet käymästä
huoneessa, jossa en odottanut hänen olevan, puuhailemassa
vaatekaapin ääressä. Hän pelästyi tuloani ja jatkoi nopeasti
kulkuansa; näin kuitenkin, että hän oli tarkastellut isän vaatteita, ja
jälkeenpäin oli hänellä punaiset silmät.

Kun kesä tuli, alkoi uusi taistelu. Halusin ehdottomasti tehdä


matkan äidin kanssa; molemmat olimme virkistyksen tarpeessa, ja
toivoin sitä paitsi voivani ilahduttaa häntä ja saavuttaa häneen
suurempaa vaikutusta. Hänellä ei näyttänyt olevan paljoa halua
matkustamiseen, mutta hän ei kuitenkaan juuri asettunut
vastaankaan; sitä innokkaammin koetti neiti Schniebel saada aikaan,
että äiti jäisi kotiin ja minä matkustaisin yksin. Mutta tässä asiassa
en mitenkään halunnut myöntyä, toivoin matkasta olevan suurta
hyötyä.
Sainkin aikaan sen, että matkustimme kesäkuun lopulla. Kuljimme
lyhyin päivämatkoin, näimme Konstanzin ja Zürichin ja matkustimme
Brünigin kautta Bernin ylämaata kohden. Äitini pysyi vaiteliaana ja
väsyneenä, antoi matkan kulua ja näytti onnettomalta. Interlakenissa
alkoi hän valittaa, ettei hän enää voinut nukkua, mutta minä sain
hänet suostutetuksi lähtemään vielä Grindelwaldiin, missä toivoin
rauhallista oleskelua hänelle ja itselleni. Tällä järjettömällä,
loppumattoman pitkällä, ilottomalla matkalla huomasin, kuinka
mahdotonta on paeta omaa kurjuuttaan. Ihanat, vihreät järvet
heijastelivat vanhoja kaupunkeja, vuoret kohosivat valkeina ja
sinisinä ja sinivihreät jäätiköt säteilivät auringon hohteessa. Mutta
me molemmat kuljimme kaiken tämän ohitse äänettöminä ja
ilottomina, tunsimme kaikesta vain painostusta ja väsymystä.
Teimme kävelyretkiä, katselimme ylös vuorille, hengitimme keveätä,
suloista ilmaa ja kuulimme lehmänkellojen kalkattavan nurmikoilla, ja
sanoimme: "Miten kaunista!" emmekä tätä sanoessamme
uskaltaneet katsoa toisiamme silmiin.

Viikon ajan kestimme Grindelvaldissa. Silloin sanoi äitini eräänä


aamuna: "Kuule, tämä kaikki on turhaa, palatkaamme kotiin.
Tahtoisin mielelläni jälleen jonakuna yönä saada unta. Ja jos
sairastun ja kuolen, teen sen mieluummin kotona."

Silloin panin mitään sanomatta matkatavaramme kuntoon,


myönsin itsekseni hänen olevan oikeassa ja matkustin hänen
kanssaan takaisin koko matkan nopeammin kuin olimme tulleet.
Minusta ei tämä kuitenkaan tuntunut paluulta kotiin, vaan vankilaan,
ja äitikin osotti tyytyväisyyttään vain heikosti.

Ja paluupäivän iltana sanoin hänelle: "Mitä arvelisit siitä, jos minä


jälleen matkustaisin? Palaisin R:iin. Näetkös, jäisin mielelläni
luoksesi, jos huomaisin siitä olevan vähintäkään hyötyä. Mutta me
olemme molemmat sairaat ja synkkämieliset ja masennamme vain
toisiamme. Ota ystävättäresi luoksesi asumaan, hän osaa paremmin
lohduttaa sinua kuin minä."

Tapansa mukaan tarttui hän käteeni ja hyväili sitä hiljaa. Hän


nyökäytti päätään ja katsoi minuun hymyillen, ja hymy sanoi
selvästi: "Niin, mene vain!"

Kaikilla ponnistuksillani ja hyvillä tarkotuksillani en siis ollut


saavuttanut muuta kuin että olin parin kuukauden ajan kiusannut
sekä häntä että itseäni ja vierottanut hänet vielä paljoa kauemmaksi
itsestäni. Huolimatta yhdessä-olostamme oli kumpikin meistä
kantanut kuormansa yksinään eikä jakanut sitä toisen kanssa, ja
kumpikin oli vain syvemmin vajonnut kärsimyksiinsä ja sairauteensa.
Yritykseni olivat jääneet tuloksettomiksi, enkä osannut tehdä mitään
sen parempaa kuin lähteä ja antaa tilaa neiti Schniebelille.

Sen teinkin pian, ja kun en tiennyt mitään muutakaan paikkaa,


palasin takaisin R:iin. Lähtiessäni tulin tajuiseksi siitä, ettei minulla
enää ollut kotiseutua. Kaupunki, jossa olin syntynyt ja elänyt
lapsuudenvuoteni ja johon olin haudannut isäni, ei liikuttanut minua
enää vähääkään, sillä ei ollut minulta mitään vaadittavaa eikä
minulle mitään muuta annettavaa kuin muistoja. En sanonut sitä
herra Lohelle jäähyväisiä ottaessani, mutta hänen reseptinsä ei ollut
auttanut.

Sattumalta oli R:issä vanha asuntoni vielä tyhjänä. Se oli minulle


kuin merkki, että oli hyödytöntä katkaista yhteyttään entisyyden
kanssa ja koettaa paeta omaa kohtaloansa. Asuin jälleen samassa
talossa ja huoneessa, samassa kaupungissa, otin viuluni ja työni
jälleen esille ja huomasin kaiken olevan samanlaista kuin ennenkin,
paitsi että Muoth oli matkustanut Müncheniin ja että Gertrudista oli
tullut hänen morsiamensa.

Otin esille oopperani kappaleet, kuin olisivat ne olleet entisen


elämäni raunioita, joista nyt vielä koetin rakentaa jotakin. Kuitenkin
virkosi musiikki vain hitaasti jäykistyneessä sielussani ja heräsi eloon
vasta kun kaikkien tekstieni runoilija lähetti minulle uuden laulun. Se
tuli aikana, jolloin useasti iltaisin tunsin vanhaa levottomuutta ja
häveten ja tuhansien virvaliekkien tanssiessa sielussani.

Imthorin talon puutarhan ympärillä, ja se kuului:

Föhn-myrsky öisin puhaltaa


Ja kostehina lyövät siivet sen,
Käy ilman halki kulku kuovien,
Nyt kaikki herää. Uinahtaa
Ei kenkään rauhallisna voi,
Kun kevään huuto soi.

Ma kevätöinä myöskään nuku en,


Mun nuortuu sydämeni.
Ja kuumat haavehet mun nuoruuteni
Ne nousee uumenista muistojen.
Ne mua silmihini katsahtaa
Ja kauhuin katoaa.

Lyö hiljaa sydämeni!


Ja vaikka veressäsi kutsuen
Soi ääni nuoruutesi viettien —
Se aika kuitenkin jo sulta meni,
Jäi nuoruutesi
Jo taakse retkiesi.
Nämä säkeistöt tunkeutuivat sisimpääni ja herättivät minussa
uudelleen soinnut eloon. Irtautuneena ja kipeästi polttavana siirtyi
kauan pidätetty tuskani tahteihin ja sointuihin, laulusta löysin jälleen
kadottamani tien oopperaan, ja pitkän aution aikani jälkeen vaivuin
jälleen syvälle purkautuvan luomisrunsauteni huumaan, aina tunteen
vapaille maille, missä tuska ja riemu eivät enää ole toisistaan
erotetut ja koko sielun hehkuva voima jakamattomana kohoaa ylös
yhtenä ainoana tulikielekkeenä.

Samana päivänä, jolloin olin säveltänyt uuden lauluni ja näyttänyt


sen Teiserille, kuljin illalla erästä kastanjakujannetta kotiin päin,
kokonaan täynnä uutta työintoa. Menneet kuukaudet katselivat
minua vielä kuin naamion silmät lohduttomassa tyhjyydessään. Nyt
löi sydämeni kärsimättömän kiivaasti eikä enää ymmärtänyt, miksi se
oli tahtonut paeta tuskaansa. Gertrudin kuva kohosi kirkkaana ja
ihanana tuhasta, minä katsoin jälleen pelkäämättä hänen kirkkaihin
silmiinsä ja avasin sydämeni kaikille tuskille. Ah, oli parempi kärsiä
hänen tähtensä ja painaa okaa syvemmälle haavaan, kuin kaukana
hänestä ja kaukana todellisesta elämästäni viettää aikaansa
kaameassa pimeydessä! Leveiden kastanjoiden täyteläisten latvojen
yläpuolella kaareutui tumman sinisenä taivas täynnä tähtiä, jotka
kaikki tuikkivat kultaisina ja vakaina ja lähettivät huolettomina
valoaan avaruuksiin. Niin tekivät tähdet, ja puut kantoivat
nuppujansa, kukkiansa ja arpiansa vapaasti kaikkien nähden ja
antautuivat suuren elämän mahdin valtaan, merkitsi se heille riemua
taikka tuskaa. Päiväperhoset tanssivat parvissa kuolemaa kohti,
kaikella elämällä oli loistonsa ja kauneutensa, ja minä pilkistin
hetkisen siihen, ymmärsin sitä ja näin sen hyväksi ja näin myöskin
oman elämäni ja kärsimykseni hyväksi.
Syksyn kuluessa tuli oopperani valmiiksi. Näihin aikoihin tapasin
eräässä konsertissa herra Imthorin. Hän tervehti minua
sydämellisesti ja hiukan ihmeissään, kun ei tiennyt minun
oleskelevan kaupungissa. Hän oli vain kuullut, että isäni oli kuollut ja
että minä siitä lähtien olin ollut kotiseudullani.

"Ja miten neiti Gertrud jaksaa?" kysyin mahdollisimman


rauhallisesti.

"Teidän pitäisi itse tulla siitä ottamaan selkoa. Marraskuun alussa


ovat heidän häänsä, ja olemme ilman muuta olleet varmat teidän
läsnäolostanne."

"Kiitos, herra Imthor. Ja mitä Muothista kuuluu?"

"Hän voi hyvin. Tiedätte, ettei tämä avioliitto ole ollut minulle
oikein mieleen. Olisin jo kauan sitten mielelläni kerran kysynyt teiltä
yhtä ja toista herra Muothista. Mikäli häntä tunnen, ei minulla ole
valittamisen syytä. Mutta olen kuullut hänestä niin monenlaista:
hänhän kuuluu olleen paljon tekemisissä naisten kanssa. Voitteko
sanoa tästä asiasta mitään?"

"En, herra Imthor. Eikähän siitä olisi myöskään mitään hyötyä.


Tyttärenne tuskin huhujen perustalla muuttaisi päätöstänsä. Herra
Muoth on ystäväni, ja suon hänelle sen, että hän löytää onnensa."

"Niin, niin. Saammeko taas joskus nähdä teidät luonamme?"

"Toivoakseni. Näkemiin, herra Imthor."

Siitä ei ollut pitkä aika, jolloin olisin vielä tehnyt kaikkeni,


estääkseni näiden molempien välisen avioliiton, en kateudesta tai
toivoen että Gertrud saattaisi kääntyä minulle suosiolliseksi, vaan sen
takia, että olin vakuutettu ja luulin tuntevani edeltäpäin, että noille
molemmille ei kävisi hyvin, kun ajattelin Muothin itseänsäkiduttavaa
melankoliaa, hänen ärtyisyyttään ja Gertrudin hentoa olentoa ja
koska Marion ja Lotte vielä olivat niin hyvin muistissani.

Nyt ajattelin toisin. Koko elämäni järkkyminen, puolen vuoden


sisäinen yksinäisyys ja hyvästijättö nuoruudelle olivat muuttaneet
minut. Olin nyt sitä mieltä, että oli mieletöntä ja vaarallista ojentaa
kättänsä toisten ihmisten kohtaloihin, eikä minulla myöskään ollut
mitään syytä pitää kättäni taitavana ja itseäni auttajana ja
ihmistuntijana, sen jälkeen kun kaikki yritykseni tässä suhteessa
olivat epäonnistuneet ja katkerasti nöyryyttäneet minua. Vielä
nykyäänkin epäilen kovasti ihmisen kykyä tietoisesti vaikuttaa
omaansa ja toisten elämään ja muodostella sitä joksikin. Rahaa voi
hankkia, mainetta ja kunniamerkkejä myöskin, mutta onnea tai
onnettomuutta ei hankita, ei itselle eikä muille. Voi ainoastaan ottaa
vastaan sen, mitä tulee, ja voi tosin myöskin ottaa sen vastaan
sangen eri tavalla. Mitä minuun tuli, en tahtonut tehdä enää
minkäänlaisia väkivoimaisia yrityksiä kääntääkseni elämääni
aurinkopuolelle, vaan ottaa vastaan minulle määrätyn osani ja kykyni
mukaan kantaa sen ja kääntää sen hyväksi.

Vaikka elämä kyllä on tällaisista mietiskelyistäkin riippumaton ja


kulkee koskemattomana yli niiden, niin jättävät rehellisesti tarkotetut
päätökset ja ajatukset kuitenkin sieluun rauhan ja auttavat
kantamaan sitä, mikä ei ole muutettavissa. Ainakin piteli minua,
kuten minusta nyt perästäpäin tuntuu, elämä lempeämmin käsin sen
jälkeen, kuin olin antautunut ja tullut tietoiseksi personallisen
kohtaloni vähäarvoisuudesta.
Että se, mitä ei voi saavuttaa kaikella tahdonvoimallaan ja
ponnistuksillaan, usein odottamatta saapuu itsestään, sen sain pian
kokea äitini suhteen. Kirjotin hänelle joka kuussa enkä ollut kotvaan
aikaan saanut häneltä vastausta. Jos hänen laitansa olisi ollut
huonosti, olisin saanut siitä kuulla; sen vuoksi ajattelin sangen vähän
asiaa ja kirjoittelin yhä edelleen kirjeitäni, lyhyitä selontekoja
elämästäni, liittäen joka kerran mukaan myöskin ystävälliset
terveiset neiti Schniebelille.

Näitä terveisiä ei tosin viime aikoina liene saatettu perille.


Molempien vanhojen naisten oli käynyt liian hyvin, he eivät olleet
jaksaneet sulattaa toiveittensa täyttymistä. Nimenomaan oli onni
noussut neiti Schniebelille päähän. Hän oli heti minun lähtöni jälkeen
riemulla saapunut voittamallensa tantereelle ja asettunut asumaan
kotiimme. Siellä hän nyt majaili vanhan ystävättärensä ja serkkunsa
rinnalla ja piti pitkien, niukoissa olosuhteissa vietettyjen vuosien
jälkeen hyvinansaittuna onnenaan saada mahtailla
kanssavaltiattarena suuressa taloudessa. Ei silti, että hän olisi
ottanut itselleen kalliita tapoja ja ryhtynyt tuhlaamaan — sitä
tehdäkseen oli hän liian kauan elänyt ahtaissa olosuhteissa,
puolittain köyhyydessä. Hän ei pitänyt hienompia vaatteita eikä
nukkunut paremmilla lakanoilla; pikemmin hän nyt vasta oikein alkoi
taloudenpidon ja säästämisen, kun se kannatti ja kun oli jotain
säästettävää. Mutta mistä hän ei tahtonut luopua, oli mahti ja
vaikutusvalta. Molempien piikojen piti olla hänelle yhtä kuuliaisia kuin
äidillenikin, ja myöskin muuta palvelusväkeä, käsityöläisiä,
kirjeenkantajaa kohtaan osasi hän käyttäytyä hallitsijattaren tavoin.
Ja vähitellen, koska intohimot kuten tunnettua eivät saa tyydytystä
täyttymisestään, laajensi hän hallitsemishalunsa piiriä myöskin
sellaisiin asioihin, joissa äitini ei ollut yhtä aulis antamaan myöten.
Hän tahtoi, että vieraat, jotka kävivät äitini luona, myöskin
käynnillään tarkottivat häntä, eikä sallinut äitini ottaa vastaan
ketään, jollei hän myöskin ollut saapuvilla. Hän ei tyytynyt saamaan
osittain tietää kirjeiden, nimenomaan minulta tulleiden, sisällyksestä,
vaan tahtoi itse lukea ne. Ja lopuksi huomasi hän, että äitini talossa
monessa suhteessa meneteltiin ja hallittiin kokonaan toisin, kuin hän
piti oikeana. Ennen kaikkea ei hänestä palvelijoiden silmälläpito ollut
kyllin ankaraa. Jos toinen piioista oli illalla viipynyt liian kauan poissa
kotoa, jos toinen oli liian kauan keskustellut kirjeenkantajan kanssa,
jos keittäjätär pyysi vapautta sunnuntaiksi, moitti hän mitä
ankarimmin äitini myöntyväisyyttä ja piti hänelle pitkiä puheita
oikeasta taloudenpidosta. Samoin oli hänestä katkeraa nähdä, miten
usein ja törkeästi säästäväisyyden periaatteita loukattiin. Jälleen
ajettiin taloon hiiliä, keittäjättären laskussa oli liian paljon munia!
Hän nousi ankaruudella ja innolla vastustamaan tällaista, ja siitä sai
ystävätärten epäsopu alkunsa.

Tähän saakka tapahtuneeseen oli äitini mielellään mukautunut,


vaikkei hän ollutkaan kaikessa yhtä mieltä ja monessa suhteessa
tunsi pettymystä ystävättäreensä nähden, jonka suhdetta häneen
itseensä hän lienee ajatellut toisenlaiseksi. Nyt sitä vastoin, kun talon
vanhat ja kunnianarvoisiksi käyneet tavat joutuivat vaaraan, kun
hänen päivittäinen mukavuutensa ja kotirauhansa alkoi joutua
kärsimään, ei hän voinut pidättää vastaväitteitään ja ryhtyi
puolustamaan itseään, missä hän ei kuitenkaan vetänyt vertoja
serkullensa. Syntyi erimielisyyttä ja pieniä ystävällisiä kinasteluja, ja
kun keittäjätär sanoutui irti palveluksestaan ja tuskin suostui
jäämään äitini lupausten ja pyytelyjen vuoksi, alkoi valtakysymys
muodostua todella sodaksi.

Neiti Schniebel, ylpeänä tiedostaan, kokemuksistaan,


säästäväisyydestään ja taloudellisista hyveistään, ei voinut käsittää,
miksei häntä lainkaan ymmärretty kiittää kaikista näistä avuistaan, ja
tunsi olevansa niin varma asiastaan, ettei hän enää katsonut
tarvitsevansa salata tähänastisen taloudenpidon arvostelemista, äitini
emännöimistaidon moittimista ja sääliä koko talon tapoja kohtaan.
Nyt vetosi äiti isääni, jonka johdolla hallittuna talo oli kukoistanut
niin monta vuotta. Tämä ei ollut sietänyt pikkumaisuutta ja
tuskallista säästeliäisyyttä, hän oli suonut palvelijoille vapautta ja
oikeuksia, hän oli vihannut piikojen kinastelua ja kiukuttelua. Mutta
äitini vedotessa henkilöön, jota hän itsekin joskus ennen sattumalta
lienee arvostellut, mutta joka kuolemansa jälkeen oli muuttunut
pyhimykseksi hänen silmissään, ei neiti Schniebel voinut vaieta, vaan
muistutti purevasti siitä, miten hänellä jo aikaa oli ollut oma
ajatuksensa vainajasta, ja arveli nyt jo olevan ajan tehdä loppu
tuosta vanhaan tapaan elämisestä ja noudattaa järkevämpiä
periaatteita. Hän ei tietysti säälistä ystävätärtään kohtaan ollut
tahtonut koskea vainajan muistoon; mutta kun tämä itse vetosi
häneen, täytyi hänen tunnustaa, että vanha herra tosin oli ollut
syypäänä moniin epäkohtiin talossa, mutta ettei hän ymmärtänyt,
miksi asioiden edelleenkin piti jäädä samalle kannalle, kun heillä
kerran oli vapaat kädet.

Se oli äidilleni vasten kasvoja annettu isku, jota hän ei antanut


serkulleen anteeksi. Aikaisemmin oli ollut hänelle tarve ja nautinto
silloin tällöin saada yhdessä tämän uskottunsa kanssa valitella ja
löytää yhtä ja toista paikkailtavaa isän puuhista; mutta nyt ei hän
kärsinyt pienintäkään varjoa tämän kirkastunutta kuvaa
himmentämässä ja alkoi pitää talossa alkanutta vallankumousta ei
vain häiriötä aikaansaavana, vaan myöskin ennen kaikkea rikoksena
vainajan muistoa kohtaan.
Niin oli käynyt, minun saamattani siitä kuulla. Kun äitini kirje ensi
kertaa viittasi tähän lintuhäkissä syntyneeseen toraan, vaikkakin
vielä varovassa muodossa, sai juttu minut nauramaan. Jätin
seuraavasta kirjeestäni pois terveiset vanhalle neidille, mutta en ollut
viittauksista tietääksenikään, ajatellen että naiset suoriutuisivat
parhaiten ilman minun apuani. Myöskin sattui välillä muuta, joka
antoi minulle paljon enemmän ajattelemista.

Oli tullut lokakuu, ja Gertrudin odotettavissa olevat häät eivät enää


lähteneet ajatuksistani. En ollut käynyt hänen kotonaan enkä
tavannut häntä. Häiden jälkeen, kun hän olisi poissa, aioin jälleen
ryhtyä seurusteluun hänen isänsä kanssa. Toivoin myöskin, että ajan
mittaan hänen ja minun välilleni muodostuisi jälleen hyvä,
tuttavallinen suhde, olimme jo olleet toisiamme liian lähellä,
voidaksemme ilman muuta tehdä olleen olemattomaksi. Mutta nyt ei
minulla vielä ollut kyllin rohkeutta kohdata häntä.

Silloin eräänä päivänä kolkutettiin hyvin tunnetulla tavalla ovelleni.


Aavistaen ja hämmentyneenä menin avaamaan, ja siinä seisoi
Heinrich Muoth ja ojensi minulle kätensä.

"Muoth!" huudahdin minä pitäen kiinni hänen kädestään ja


voimatta katsoa häntä silmiin, kaiken minussa heräämättä uudelleen
tuskallisesti polttaen. Näin jälleen kirjeen hänen pöydällään, kirjeen,
jossa oli Gertrudin käsialaa, näin jälleen, miten sanoin hänelle
jäähyväiset ja päätin kuolla. Siinä seisoi hän nyt ja katseli minua
tutkivasti. Hän näytti hiukan laihtuneelta, mutta kauniilta ja ylpeältä
kuten aina.

"En odottanut sinua", sanoin hiljaa.


"Etkö? Ettet enää ole käynyt Gertrudin luona, tiedän jo. Minun
puolestani — jättäkäämme tämä kaikki keskustelematta! Tulin
katsomaan, miten voit ja miten teoksesi edistyy. Miten on oopperasi
laita?"

"Se on valmis. Mutta ensiksi: Miten voi Gertrud?"

"Hyvin. Meillähän on pian häämme."

"Tiedän sen."

"Niin. Etkö kohdakkoin taasen kerran käy häntä katsomassa?"

"Myöhemmin kyllä. Tahdon nähdä, onko hänen myöskin hyvä olla


luonasi."

"Hm…"

"Heinrich, älä pahastu, mutta minun täytyy useasti ajatella Lottea,


jota sinä kohtelit pahoin ja löit."

"Jätä Lotte! Se oli hänelle oikein. Iskuja ei saa kukaan nainen, joka
ei tahdo saada niitä."

"No niin. Siis oopperaani. En vielä lainkaan ole selvillä, minne sitä
ensin tarjoaisin. Sen pitäisi olla hyvä näyttämö, mutta tokko sellainen
huolii teoksestani?"

"Huoliipa kyllä. Halusinkin puhua tästä kanssasi. Lähetä se


Müncheniin! Todennäköisesti se hyväksytään; sinuun kiinnitetään
huomiota, ja hätätilassa vastaan minä siitä. Tahtoisin mielelläni, ettei
kukaan muu laulaisi osaani ennen minua."
Sillä olin autettu. Suostuin mielelläni ja lupasin nopeasti toimittaa
käsikirjotuksesta jäljennöksen. Keskustelimme yksityiskohdista ja
jatkoimme puhelua hämillämme, ikäänkuin kaikki mitä sanoimme
olisi ollut ylen tärkeätä, ja kuitenkaan emme tahtoneet mitään muuta
kuin saada ajan kulumaan ja silmämme ummistetuksi siltä kuilulta,
joka oli avautunut välillemme.

Muoth katkaisi ensiksi tuon salaisen siteen.

"Kuule", sanoi hän, "muistatko vielä, miten aikoinaan otit minut


mukaasi Imthorille? Siitä on nyt vuosi."

"Muistan kyllä", sanoin minä, "eikä sinun olisi tarvinnut minua siitä
muistuttaa. Lähtisit ennemmin!"

"En, ystäväni. Siis muistat vielä. No, jos jo silloin rakastit tyttöä,
mikset sanonut siitä sanaakaan minulle? Mikset sanonut: Jätä hänet
rauhaan, jätä hänet minulle! Se olisi ollut kylliksi, olisin ymmärtänyt
viittauksenkin."

"Sitä en saattanut tehdä."

"Etkö saattanut? Miksi et? Kuka käski sinua katselemaan syrjästä


ja olemaan ääneti siksi kunnes jo oli myöhäistä?"

"Enhän voinut tietää, rakastiko hän minua. Ja sittenkin — jos sinä


olet hänelle rakkaampi, eihän silloin ole mitään tehtävissä."

"Olet lapsi! Hän olisi kenties sinun kanssasi tullut onnellisemmaksi!


Onhan toki jokaisella oikeus vallottaa itselleen puoliso. Ja jos heti
alussa olisit sanonut minulle sanankaan, antanut pienen
vihjauksenkin, olisin pysynyt poissa. Jälkeenpäin oli se tietysti liian
myöhäistä."
Minulle oli tämä keskustelu tuskallista.

"Ajattelen asiaa toisin", sanoin minä, "ja sinunhan on syytä olla


tyytyväinen, eikö totta? Jätä siis minut rauhaan! Vie hänelle
terveiset, ja minä saanen sitten tilaisuuden Münchenissä käydä
luonanne."

"Häihin et tahdo tulla?"

"En, Muoth, se olisi mautonta. Mutta — annatteko vihkiä itsenne


kirkollisesti?"

"Luonnollisesti, tuomiokirkossa."

"Se on mieleeni. Minulla on jotain tilaisuuden varalta, alkusoitto


uruille. Ole huoletta, se on aivan lyhyt."

"Sinäpä olet kunnon mies! Hitto vieköön, että minulla sinun


suhteesi on niin huono onni!"

"Minun mielestäni olisi sinun sanottava hyvä onni, Muoth."

"No, älkäämme kiistelkö. Minun täytyy nyt mennä, on vielä


ostettava tarpeellisia talousesineitä ja Luoja ties mitä kaikkea.
Oopperan lähetät pian, niinhän? Lähetä se minulle, niin vien sen
vanhuksellemme itse. Niin, ja ennenkuin vietän hääni, pitäisi meidän
molempien toki vielä kerran viettää ilta yhdessä. Kenties huomenna?
— Hyvä, näkemiin!"

Nyt olin jälleen vanhojen ajatusten piirissä ja vietin yön tuhannesti


haudottujen mietteiden ja tuhannesti koettujen tuskien kiusaamana.
Seuraavana päivänä menin erään tutun urkutaiteilijan luokse ja,
pyysin tätä ottamaan soittaakseen sävellykseni Muothin vihkiäisissä.
Iltapäivällä Teiserin kanssa viimeisen kerran tarkastin alkusoittoni. Ja
illalla saavuin määräaikana Heinrich Muothia tapaamaan.

Ravintolassa oli meitä varten varattu huone kamiinivalkeineen ja


kynttilöineen, valkeaksi katettuine pöytineen, ja Muoth odotti jo
minua.

"Kas niin, poikaseni", huusi hän, "nyt vietämme erojaisia,


enemmän minun kuin sinun. Gertrud lähetti terveisiä, juomme hänen
onnekseen."

Täytimme lasimme ja tyhjensimme ne äänettöminä.

"Niin, ja nyt ajattelemme vielä hiukan itseämmekin. Nuoruus alkaa


olla menossa, ystäväiseni, etkö sinäkin sitä huomaa? Sitähän
sanotaan elämän kauneimmaksi ajaksi. Toivon sen olevan erehdystä,
kuten kaikki tuollaiset suositut sananparret. Parhaan täytyy vasta olla
tulossa, muuten ei tämä kaikki juuri olisi maksanut vaivaa. Kun
oopperasi joutuu esitettäväksi, puhumme enemmän tästä."

Söimme hyvällä ruokahalulla ja joimme vahvaa Reinin-viiniä lisäksi;


sitten asetuimme sikaarien ja samppanjan ääreen syviin
nojatuoleihin, ja hetkiseksi saapui luoksemme vanha aika, nuo
puheliaat suunnitelmien rakentamisen ja jaarittelun hetket;
katselimme toisiamme huolettoman miettiväisesti silmiin ja olimme
toisiimme tyytyväiset. Heinrich oli sellaisina hetkinä ystävällisempi ja
lempeämpi kuin muuten, hän tunsi niiden häipyväisyyden ja piteli
niitä, niinkauan kuin tunnelma säilyi, suojellen ja varovaisin käsin.
Hiljakseen ja hymyillen puhui hän Münchenistä, kertoili pieniä
teatterijuttuja ja harjotti vanhaa hienoa taitoansa, lyhyin selvin
sanoin loihtia esiin henkilöitä ja olosuhteita.
Kun hän täten oli leikillisesti ja terävästi, mutta ilman ilkeyttä
karakterisoinut orkesterinjohtajansa, appensa ja muutamia muita,
join hänen terveydekseen ja kysyin: '"No, mitä sanot minulle? Onko
sinulla minunlaisistani ihmisistä myös joku määrittely?"

"Onpa kyllä", nyökäytti hän iloisena päätään ja suuntasi tummat


silmänsä minuun. "Sinä olet kaikessa taiteilijan tyyppi. Taiteilijahan ei
ole, kuten filisterit arvelevat, huoleton herrasmies, joka sulasta
ylimielisyydestä heittää taideteoksen sinne, toisen tänne, vaan
enimmäkseen ikävä kyllä köyhä poloinen, joka on tukehtua omaan
hyödyttömään rikkauteensa ja jonka sen vuoksi täytyy antaa jotain
itsestään. Ei ole mitään perää sadussa onnellisesta taiteilijasta, se on
pelkkää jaarittelua. Iloinen Mozart piti itseään pystyssä samppanjan
avulla ja kärsi siitä syystä leivän puutetta, ja kuinka Beethoven ei jo
nuorena riistänyt itseltään elämää, vaan sen sijaan loi ihanat
sävellyksensä, sitä ei ymmärrä kukaan ihminen. Rehellinen taiteilija
on elämässään onneton. Kun hänellä on nälkä ja hän avaa säkkinsä,
on siinä aina vain helmiä!"

"Niin, jos kaipaa hiukkastakaan iloa ja lämmintä ja osanottoa


elämässä, silloin ei tusina oopperoita, trioja ja muuta sellaista auta
paljoakaan."

"Uskon sen. Tällainen hetki viinin ääressä ystävän keralla, jos


sellainen on, ja hyvätuulinen tarinoiminen tästä ihmeellisestä
elämästä on oikeastaan parasta, mitä voi toivoa. Miten kauan joku
poloinen valmisteleekaan kaunista rakettia, josta sitten on iloa tuskin
minuutiksikaan!"

Itse asiassa en hyväksynyt lainkaan hänen filosofiaansa, mutta


mitäpä merkitsi se? Minun oli mieluista viettää sellainen ilta ystävän
seurassa, jonka olin pelännyt olevani pakotettu kadottamaan ja
jonka säilyttämisestä en näinkään ollut varma, ja muistelin
mietiskellen mennyttä aikaa, joka vielä oli niin lähellä ja kuitenkin
käsitti jo koko nuoruuteni, jonka kevytmielisyys ja huolettomuus
eivät enää saattaneet palata.

Hyvissä ajoin läksimme, ja Muoth tarjoutui saattamaan minua


kotiini saakka. Mutta epäsin hänet siitä. Tiesin, ettei hän mielellään
kulkenut kanssani kadulla, minun hidas kulkuni häiritsi ja ärsytti
häntä. Hän ei ollut tottunut uhrautumaan, ja tuollaiset pikku uhrithan
ovatkin useasti vaikeimmat.

Vähäinen urkusävellykseni miellytti minua. Se oli jonkinlainen


preludio ja merkitsi minulle irtautumista vanhasta, kiitosta ja
onnittelua vihittäville sekä jälkisointua hyvästä ystävyydestäni heidän
kanssaan.

Hääpäivänä saavuin hyvissä ajoin kirkkoon ja katselin


vihkimisjuhlallisuutta kätköstä urkujen luota. Kun taiteilija soitti
kappalettani, nosti Gertrud katseensa ja nyökäytti sulhaselleen
päätänsä. En ollut kertaakaan nähnyt häntä koko tänä aikana. Hän
näytti valkeassa puvussaan vielä pitemmältä ja solakammalta ja
astui suloisen vakavana kapeata koristettua käytävää alttarille,
ylpeästi suorana käyvän miehen rinnalla. Ei olisi näyttänyt yhtä
muhkealta, jos minä viisto rampa hänen sijastaan olisin astunut tätä
juhlallista tietä.

7.
Oli pidetty huoli siitäkin, etten saanut kauan ajatella ystävieni häitä
ja sitä tietä saada aihetta mietiskelyihini ja itseni kiduttamiseen.

Äitiäni olin tänä aikana vähän ajatellut. Olin tosin hänen viime
kirjeestään saanut tietää, ettei kotoisen elämän ja rauhan laita ollut
loistavasti, mutta minulla ei ollut enemmän syytä kuin haluakaan
sekaantua molempien naisten väliseen riitaan, vaan totesin sen
jonkunlaista vahingoniloa tuntien asiana, johon nähden minun
ratkaiseva sanani ei ollut tarpeen. Olin sittemmin kirjottanut
saamatta vastausta ja minulla oli oopperani jäljennöksen
tarkastamisessa siksi paljo työtä, ettei minulta riittänyt aikaa ajatella
neiti Schniebeliä.

Silloin sain äidiltä kirjeen, joka hämmästytti minua jo aivan


tavattoman pituutensa takia. Se oli hänen entistä
henkiystävätärtänsä vastaan suunnattu syytöskirjelmä, josta sain
tietää kaikki hänen rikoksensa äitini koti- ja sielunrauhaa vastaan.
Hänen oli vaikeata kirjottaa tästä minulle, ja hän teki sen
arvokkaassa ja varovassa muodossa, mutta se oli ilmeinen tunnustus
siitä pettymyksestä, jota hän tunsi vanhan ystävättärensä ja
serkkunsa suhteen. Äitini ei ainoastaan myöntänyt minun ja
isävainajani vastenmielisyyttä neiti Schniebeliä kohtaan täysin
oikeutetuksi, vaan olipa hän nyt valmis suostumaan talon
myymiseen, jos minä vielä halusin sitä, ja vaihtamaan asuinpaikkaa,
ja tekemään kaiken tämän vain päästäksensä eroon Schniebelistä.

"Olisi kenties hyvä, että tulisit itse. Lucie tietää nimittäin jo, mitä
ajattelen ja suunnittelen, hän vainuaa sen varsin hyvin; mutta
suhteemme on liiaksi jännittynyt, jotta voisin sanoa hänelle sen,
mikä on tarpeen, oikeassa muodossa. Minun viittailujani siihen
suuntaan, että mieluummin jälleen asuisin yksin kotona ja että tulen
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like