100% found this document useful (1 vote)
6 views

Kotlin Notes For Professionals Book Goalkicker Books download

The document provides a comprehensive overview of the 'Kotlin Notes for Professionals' book, which is an unofficial educational resource containing over 80 pages of professional hints and tricks for Kotlin programming. It includes chapters on various topics such as getting started, basic syntax, collections, functions, and more advanced concepts like coroutines and DSL building. Additionally, it offers links to other Kotlin-related resources and books for further learning.

Uploaded by

tsyoncayao
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
100% found this document useful (1 vote)
6 views

Kotlin Notes For Professionals Book Goalkicker Books download

The document provides a comprehensive overview of the 'Kotlin Notes for Professionals' book, which is an unofficial educational resource containing over 80 pages of professional hints and tricks for Kotlin programming. It includes chapters on various topics such as getting started, basic syntax, collections, functions, and more advanced concepts like coroutines and DSL building. Additionally, it offers links to other Kotlin-related resources and books for further learning.

Uploaded by

tsyoncayao
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/ 38

Kotlin Notes For Professionals Book Goalkicker

Books download

https://ebookbell.com/product/kotlin-notes-for-professionals-
book-goalkicker-books-43246544

Explore and download more ebooks at ebookbell.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Kotlin Notes For Professionals Goalkickercom

https://ebookbell.com/product/kotlin-notes-for-professionals-
goalkickercom-22033514

The Toronto Notes 2012 Comprehensive Medical Reference And Review For
The Medical Council Of Canada Qualifying Exam Part 1 And The United
States Medical Licensing Exam Step 2 28th Ed Klostranec

https://ebookbell.com/product/the-toronto-notes-2012-comprehensive-
medical-reference-and-review-for-the-medical-council-of-canada-
qualifying-exam-part-1-and-the-united-states-medical-licensing-exam-
step-2-28th-ed-klostranec-6855134

Kotlin The Ultimate Guide 1st Edition Sufyan Bin Uzayr

https://ebookbell.com/product/kotlin-the-ultimate-guide-1st-edition-
sufyan-bin-uzayr-46887672

Kotlin In Action Second Edition Meap V09 Chapters 1 To 10 Of 16


Svetlana Isakova

https://ebookbell.com/product/kotlin-in-action-second-edition-
meap-v09-chapters-1-to-10-of-16-svetlana-isakova-50703078
Kotlin Essentials Marcin Moskaa

https://ebookbell.com/product/kotlin-essentials-marcin-moskaa-50821696

Kotlin Multiplatform By Tutorials Second Edition 2nd Edition Carlos


Mota

https://ebookbell.com/product/kotlin-multiplatform-by-tutorials-
second-edition-2nd-edition-carlos-mota-54275474

Kotlin Programming Concise Expressive And Powerful Theophilus Edet

https://ebookbell.com/product/kotlin-programming-concise-expressive-
and-powerful-theophilus-edet-55274912

Kotlin Blueprints Belagali Ashish Trivedi Hardik Chordiya Akshay

https://ebookbell.com/product/kotlin-blueprints-belagali-ashish-
trivedi-hardik-chordiya-akshay-22090866

Kotlin Cookbook A Problemfocused Approach 1st Edition Ken Kousen

https://ebookbell.com/product/kotlin-cookbook-a-problemfocused-
approach-1st-edition-ken-kousen-34710648
Kotlin
Kotlin
Notes for Professionals
®

Notes for Professionals

80+ pages
of professional hints and tricks

Disclaimer
GoalKicker.com This is an unocial free book created for educational purposes and is
not aliated with ocial Kotlin® group(s) or company(s).
Free Programming Books All trademarks and registered trademarks are
the property of their respective owners
Contents
About ................................................................................................................................................................................... 1
Chapter 1: Getting started with Kotlin ............................................................................................................... 2
Section 1.1: Hello World ................................................................................................................................................. 2
Section 1.2: Hello World using a Companion Object .................................................................................................. 2
Section 1.3: Hello World using an Object Declaration ................................................................................................ 3
Section 1.4: Main methods using varargs .................................................................................................................... 4
Section 1.5: Compile and Run Kotlin Code in Command Line ................................................................................... 4
Section 1.6: Reading input from Command Line ........................................................................................................ 4
Chapter 2: Basics of Kotlin ....................................................................................................................................... 6
Section 2.1: Basic examples .......................................................................................................................................... 6
Chapter 3: Strings ......................................................................................................................................................... 7
Section 3.1: String Equality ............................................................................................................................................ 7
Section 3.2: String Literals ............................................................................................................................................ 7
Section 3.3: Elements of String ..................................................................................................................................... 8
Section 3.4: String Templates ....................................................................................................................................... 8
Chapter 4: Arrays ......................................................................................................................................................... 9
Section 4.1: Generic Arrays ........................................................................................................................................... 9
Section 4.2: Arrays of Primitives .................................................................................................................................. 9
Section 4.3: Create an array ........................................................................................................................................ 9
Section 4.4: Create an array using a closure ............................................................................................................. 9
Section 4.5: Create an uninitialized array ................................................................................................................... 9
Section 4.6: Extensions ................................................................................................................................................ 10
Section 4.7: Iterate Array ............................................................................................................................................ 10
Chapter 5: Collections .............................................................................................................................................. 11
Section 5.1: Using list ................................................................................................................................................... 11
Section 5.2: Using map ............................................................................................................................................... 11
Section 5.3: Using set .................................................................................................................................................. 11
Chapter 6: Enum .......................................................................................................................................................... 12
Section 6.1: Initialization .............................................................................................................................................. 12
Section 6.2: Functions and Properties in enums ...................................................................................................... 12
Section 6.3: Simple enum ............................................................................................................................................ 12
Section 6.4: Mutability ................................................................................................................................................. 12
Chapter 7: Functions ................................................................................................................................................. 14
Section 7.1: Function References ............................................................................................................................... 14
Section 7.2: Basic Functions ....................................................................................................................................... 15
Section 7.3: Inline Functions ....................................................................................................................................... 16
Section 7.4: Lambda Functions .................................................................................................................................. 16
Section 7.5: Operator functions ................................................................................................................................. 16
Section 7.6: Functions Taking Other Functions ........................................................................................................ 17
Section 7.7: Shorthand Functions .............................................................................................................................. 17
Chapter 8: Vararg Parameters in Functions ................................................................................................ 18
Section 8.1: Basics: Using the vararg keyword ......................................................................................................... 18
Section 8.2: Spread Operator: Passing arrays into vararg functions .................................................................... 18
Chapter 9: Conditional Statements ................................................................................................................... 19
Section 9.1: When-statement argument matching .................................................................................................. 19
Section 9.2: When-statement as expression ............................................................................................................ 19
Section 9.3: Standard if-statement ............................................................................................................................ 19
Section 9.4: If-statement as an expression ............................................................................................................... 19
Section 9.5: When-statement instead of if-else-if chains ....................................................................................... 20
Section 9.6: When-statement with enums ................................................................................................................ 20
Chapter 10: Loops in Kotlin .................................................................................................................................... 22
Section 10.1: Looping over iterables ........................................................................................................................... 22
Section 10.2: Repeat an action x times ...................................................................................................................... 22
Section 10.3: Break and continue ............................................................................................................................... 22
Section 10.4: Iterating over a Map in kotlin ............................................................................................................... 23
Section 10.5: Recursion ............................................................................................................................................... 23
Section 10.6: While Loops ........................................................................................................................................... 23
Section 10.7: Functional constructs for iteration ...................................................................................................... 23
Chapter 11: Ranges ..................................................................................................................................................... 25
Section 11.1: Integral Type Ranges ............................................................................................................................. 25
Section 11.2: downTo() function .................................................................................................................................. 25
Section 11.3: step() function ........................................................................................................................................ 25
Section 11.4: until function ........................................................................................................................................... 25
Chapter 12: Regex ....................................................................................................................................................... 26
Section 12.1: Idioms for Regex Matching in When Expression ................................................................................ 26
Section 12.2: Introduction to regular expressions in Kotlin ..................................................................................... 27
Chapter 13: Basic Lambdas .................................................................................................................................... 30
Section 13.1: Lambda as parameter to filter function .............................................................................................. 30
Section 13.2: Lambda for benchmarking a function call ......................................................................................... 30
Section 13.3: Lambda passed as a variable .............................................................................................................. 30
Chapter 14: Null Safety ........................................................................................................................................... 31
Section 14.1: Smart casts ............................................................................................................................................. 31
Section 14.2: Assertion ................................................................................................................................................. 31
Section 14.3: Eliminate nulls from an Iterable and array ......................................................................................... 31
Section 14.4: Null Coalescing / Elvis Operator .......................................................................................................... 31
Section 14.5: Nullable and Non-Nullable types ......................................................................................................... 32
Section 14.6: Elvis Operator (?:) .................................................................................................................................. 32
Section 14.7: Safe call operator .................................................................................................................................. 32
Chapter 15: Class Delegation ................................................................................................................................ 34
Section 15.1: Delegate a method to another class ................................................................................................... 34
Chapter 16: Class Inheritance ............................................................................................................................... 35
Section 16.1: Basics: the 'open' keyword .................................................................................................................... 35
Section 16.2: Inheriting fields from a class ................................................................................................................ 35
Section 16.3: Inheriting methods from a class .......................................................................................................... 36
Section 16.4: Overriding properties and methods .................................................................................................... 36
Chapter 17: Visibility Modifiers ............................................................................................................................. 38
Section 17.1: Code Sample ........................................................................................................................................... 38
Chapter 18: Generics ................................................................................................................................................. 39
Section 18.1: Declaration-site variance ...................................................................................................................... 39
Section 18.2: Use-site variance ................................................................................................................................... 39
Chapter 19: Interfaces .............................................................................................................................................. 41
Section 19.1: Interface with default implementations ............................................................................................... 41
Section 19.2: Properties in Interfaces ......................................................................................................................... 42
Section 19.3: super keyword ....................................................................................................................................... 42
Section 19.4: Basic Interface ....................................................................................................................................... 42
Section 19.5: Conflicts when Implementing Multiple Interfaces with Default Implementations .......................... 43
Chapter 20: Singleton objects .............................................................................................................................. 44
Section 20.1: Use as replacement of static methods/fields of java ....................................................................... 44
Section 20.2: Use as a singleton ................................................................................................................................ 44
Chapter 21: coroutines ............................................................................................................................................. 45
Section 21.1: Simple coroutine which delay's 1 second but not blocks ................................................................... 45
Chapter 22: Annotations ......................................................................................................................................... 46
Section 22.1: Meta-annotations .................................................................................................................................. 46
Section 22.2: Declaring an annotation ...................................................................................................................... 46
Chapter 23: Type aliases ......................................................................................................................................... 47
Section 23.1: Function type ......................................................................................................................................... 47
Section 23.2: Generic type .......................................................................................................................................... 47
Chapter 24: Type-Safe Builders ......................................................................................................................... 48
Section 24.1: Type-safe tree structure builder .......................................................................................................... 48
Chapter 25: Delegated properties ..................................................................................................................... 49
Section 25.1: Observable properties .......................................................................................................................... 49
Section 25.2: Custom delegation ............................................................................................................................... 49
Section 25.3: Lazy initialization .................................................................................................................................. 49
Section 25.4: Map-backed properties ....................................................................................................................... 49
Section 25.5: Delegate Can be used as a layer to reduce boilerplate .................................................................. 49
Chapter 26: Reflection ............................................................................................................................................. 51
Section 26.1: Referencing a class ............................................................................................................................... 51
Section 26.2: Inter-operating with Java reflection .................................................................................................. 51
Section 26.3: Referencing a function ......................................................................................................................... 51
Section 26.4: Getting values of all properties of a class ......................................................................................... 51
Section 26.5: Setting values of all properties of a class .......................................................................................... 52
Chapter 27: Extension Methods ........................................................................................................................... 54
Section 27.1: Potential Pitfall: Extensions are Resolved Statically .......................................................................... 54
Section 27.2: Top-Level Extensions ........................................................................................................................... 54
Section 27.3: Lazy extension property workaround ................................................................................................ 54
Section 27.4: Sample extending Java 7+ Path class ............................................................................................... 55
Section 27.5: Sample extending long to render a human readable string ........................................................... 55
Section 27.6: Sample extending Java 8 Temporal classes to render an ISO formatted string .......................... 55
Section 27.7: Using extension functions to improve readability ............................................................................. 55
Section 27.8: Extension functions to Companion Objects (appearance of Static functions) .............................. 56
Section 27.9: Extensions for easier reference View from code .............................................................................. 57
Chapter 28: DSL Building ........................................................................................................................................ 58
Section 28.1: Infix approach to build DSL .................................................................................................................. 58
Section 28.2: Using operators with lambdas ............................................................................................................ 58
Section 28.3: Overriding invoke method to build DSL ............................................................................................. 58
Section 28.4: Using extensions with lambdas ........................................................................................................... 58
Chapter 29: Idioms ..................................................................................................................................................... 60
Section 29.1: Serializable and serialVersionUid in Kotlin ......................................................................................... 60
Section 29.2: Delegate to a class without providing it in the public constructor .................................................. 60
Section 29.3: Use let or also to simplify working with nullable objects ................................................................. 61
Section 29.4: Use apply to initialize objects or to achieve method chaining ........................................................ 61
Section 29.5: Fluent methods in Kotlin ...................................................................................................................... 61
Section 29.6: Filtering a list ......................................................................................................................................... 62
Section 29.7: Creating DTOs (POJOs/POCOs) ........................................................................................................ 62
Chapter 30: RecyclerView in Kotlin ................................................................................................................... 63
Section 30.1: Main class and Adapter ........................................................................................................................ 63
Chapter 31: logging in kotlin .................................................................................................................................. 65
Section 31.1: kotlin.logging .......................................................................................................................................... 65
Chapter 32: Exceptions ............................................................................................................................................. 66
Section 32.1: Catching exception with try-catch-finally ........................................................................................... 66
Chapter 33: JUnit ........................................................................................................................................................ 67
Section 33.1: Rules ........................................................................................................................................................ 67
Chapter 34: Kotlin Android Extensions ............................................................................................................ 68
Section 34.1: Using Views ............................................................................................................................................ 68
Section 34.2: Configuration ........................................................................................................................................ 68
Section 34.3: Painful listener for getting notice, when the view is completely drawn now is so simple and
awesome with Kotlin's extension ....................................................................................................................... 69
Section 34.4: Product flavors ..................................................................................................................................... 69
Chapter 35: Kotlin for Java Developers ......................................................................................................... 71
Section 35.1: Declaring Variables ............................................................................................................................... 71
Section 35.2: Quick Facts ............................................................................................................................................ 71
Section 35.3: Equality & Identity ................................................................................................................................. 71
Section 35.4: IF, TRY and others are expressions, not statements ......................................................................... 72
Chapter 36: Java 8 Stream Equivalents ......................................................................................................... 73
Section 36.1: Accumulate names in a List ................................................................................................................. 73
Section 36.2: Collect example #5 - find people of legal age, output formatted string ........................................ 73
Section 36.3: Collect example #6 - group people by age, print age and names together ................................. 73
Section 36.4: Dierent Kinds of Streams #7 - lazily iterate Doubles, map to Int, map to String, print each
................................................................................................................................................................................ 74
Section 36.5: Counting items in a list after filter is applied ..................................................................................... 75
Section 36.6: Convert elements to strings and concatenate them, separated by commas ............................... 75
Section 36.7: Compute sum of salaries of employee .............................................................................................. 75
Section 36.8: Group employees by department ...................................................................................................... 75
Section 36.9: Compute sum of salaries by department .......................................................................................... 75
Section 36.10: Partition students into passing and failing ....................................................................................... 75
Section 36.11: Names of male members ................................................................................................................... 76
Section 36.12: Group names of members in roster by gender ............................................................................... 76
Section 36.13: Filter a list to another list .................................................................................................................... 76
Section 36.14: Finding shortest string a list ............................................................................................................... 76
Section 36.15: Dierent Kinds of Streams #2 - lazily using first item if exists ....................................................... 76
Section 36.16: Dierent Kinds of Streams #3 - iterate a range of Integers .......................................................... 77
Section 36.17: Dierent Kinds of Streams #4 - iterate an array, map the values, calculate the average
................................................................................................................................................................................ 77
Section 36.18: Dierent Kinds of Streams #5 - lazily iterate a list of strings, map the values, convert to Int,
find max ............................................................................................................................................................... 77
Section 36.19: Dierent Kinds of Streams #6 - lazily iterate a stream of Ints, map the values, print results
................................................................................................................................................................................ 77
Section 36.20: How streams work - filter, upper case, then sort a list ................................................................... 78
Section 36.21: Dierent Kinds of Streams #1 - eager using first item if it exists ................................................... 78
Section 36.22: Collect example #7a - Map names, join together with delimiter ................................................... 78
Section 36.23: Collect example #7b - Collect with SummarizingInt ....................................................................... 79
Chapter 37: Kotlin Caveats .................................................................................................................................... 81
Section 37.1: Calling a toString() on a nullable type ................................................................................................ 81
Appendix A: Configuring Kotlin build ................................................................................................................ 82
Section A.1: Gradle configuration ............................................................................................................................... 82
Section A.2: Using Android Studio ............................................................................................................................. 83
Section A.3: Migrating from Gradle using Groovy script to Kotlin script ............................................................... 84
Credits .............................................................................................................................................................................. 86
You may also like ........................................................................................................................................................ 88
About

Please feel free to share this PDF with anyone for free,
latest version of this book can be downloaded from:
https://goalkicker.com/KotlinBook

This Kotlin® Notes for Professionals book is compiled from Stack Overflow
Documentation, the content is written by the beautiful people at Stack Overflow.
Text content is released under Creative Commons BY-SA, see credits at the end
of this book whom contributed to the various chapters. Images may be copyright
of their respective owners unless otherwise specified

This is an unofficial free book created for educational purposes and is not
affiliated with official Kotlin® group(s) or company(s) nor Stack Overflow. All
trademarks and registered trademarks are the property of their respective
company owners

The information presented in this book is not guaranteed to be correct nor


accurate, use at your own risk

Please send feedback and corrections to [email protected]

GoalKicker.com – Kotlin® Notes for Professionals 1


Chapter 1: Getting started with Kotlin
Version Release Date
1.0.0 2016-02-15
1.0.1 2016-03-16
1.0.2 2016-05-13
1.0.3 2016-06-30
1.0.4 2016-09-22
1.0.5 2016-11-08
1.0.6 2016-12-27
1.1.0 2017-03-01
1.1.1 2017-03-14
1.1.2 2017-04-25
1.1.3 2017-06-23
1.1.6 2017-11-13
1.2.2 2018-01-17
1.2.3 2018-03-01
1.2.4 2018-04-19

Section 1.1: Hello World


All Kotlin programs start at the main function. Here is an example of a simple Kotlin "Hello World" program:

package my.program

fun main(args: Array<String>) {


println("Hello, world!")
}

Place the above code into a file named Main.kt (this filename is entirely arbitrary)

When targeting the JVM, the function will be compiled as a static method in a class with a name derived from the
filename. In the above example, the main class to run would be my.program.MainKt.

To change the name of the class that contains top-level functions for a particular file, place the following annotation
at the top of the file above the package statement:

@file:JvmName("MyApp")

In this example, the main class to run would now be my.program.MyApp.

See also:

Package level functions including @JvmName annotation.


Annotation use-site targets

Section 1.2: Hello World using a Companion Object


Similar to using an Object Declaration, you can define the main function of a Kotlin program using a Companion
Object of a class.

GoalKicker.com – Kotlin® Notes for Professionals 2


package my.program

class App {
companion object {
@JvmStatic fun main(args: Array<String>) {
println("Hello World")
}
}
}

The class name that you will run is the name of your class, in this case is my.program.App.

The advantage to this method over a top-level function is that the class name to run is more self-evident, and any
other functions you add are scoped into the class App. This is similar to the Object Declaration example, other
than you are in control of instantiating any classes to do further work.

A slight variation that instantiates the class to do the actual "hello":

class App {
companion object {
@JvmStatic fun main(args: Array<String>) {
App().run()
}
}

fun run() {
println("Hello World")
}
}

See also:

Static Methods including the @JvmStatic annotation

Section 1.3: Hello World using an Object Declaration


You can alternatively use an Object Declaration that contains the main function for a Kotlin program.

package my.program

object App {
@JvmStatic fun main(args: Array<String>) {
println("Hello World")
}
}

The class name that you will run is the name of your object, in this case is my.program.App.

The advantage to this method over a top-level function is that the class name to run is more self-evident, and any
other functions you add are scoped into the class App. You then also have a singleton instance of App to store state
and do other work.

See also:

Static Methods including the @JvmStatic annotation

GoalKicker.com – Kotlin® Notes for Professionals 3


Section 1.4: Main methods using varargs
All of these main method styles can also be used with varargs:

package my.program

fun main(vararg args: String) {


println("Hello, world!")
}

Section 1.5: Compile and Run Kotlin Code in Command Line


As java provide two different commands to compile and run Java code. Same as Kotlin also provide you different
commands.

javac to compile java files. java to run java files.

Same as kotlinc to compile kotlin files kotlin to run kotlin files.

Section 1.6: Reading input from Command Line


The arguments passed from the console can be received in the Kotlin program and it can be used as an input. You
can pass N (1 2 3 and so on) numbers of arguments from the command prompt.

A simple example of a command-line argument in Kotlin.

fun main(args: Array<String>) {

println("Enter Two number")


var (a, b) = readLine()!!.split(' ') // !! this operator use for NPE(NullPointerException).

println("Max number is : ${maxNum(a.toInt(), b.toInt())}")


}

fun maxNum(a: Int, b: Int): Int {

var max = if (a > b) {


println("The value of a is $a");
a
} else {
println("The value of b is $b")
b
}

return max;

Here, Enter two number from the command line to find the maximum number. Output:

Enter Two number


71 89 // Enter two number from command line

The value of b is 89
Max number is: 89

GoalKicker.com – Kotlin® Notes for Professionals 4


Another Random Document on
Scribd Without Any Related Topics
At last I thought I saw him a little convulsed, as if with smothered
tears.

'Ah,' cried I, 'you are relenting, you are weeping. Bless you for that.
Dear, dear father, look up, and see with what joy a daughter can
embrace you.'

'My child, my child!' cried he, turning, and throwing himself upon my
bosom. 'A heart of stone could not withstand this! There, there,
there, I forgive you all!'

Fast and fondly did we cling round each other, and sweet were the
sighs that we breathed, and the tears that we shed.

But I suffered too much: the disorder which had some time been
engendering in my frame now burst forth with alarming vehemence,
and I was conveyed raving into a carriage. On our arrival at the
hotel, they sent for a physician, who pronounced me in a violent
fever of a nervous nature. For a fortnight I was not expected to
recover; and I myself felt so convinced of my speedy dissolution,
that I requested the presence of a clergyman. He came; and his
conversations, by composing my mind, contributed in a great degree
to my recovery. At my request, he paid me daily visits. Our subject
was religion,—not those theological controversies which excite so
much irreligious feeling, and teach men to hate each other for the
love of God; but those plain and simple truths which convince
without confounding, and which avoid the bigotry that would
worship error, because it is hereditary; and the fanaticism that would
lay rash hands on the holy temple, because some of its smaller
pillars appear unsound.

After several days of discussion on this important topic, he led me,


by degrees, to give him an account of my late adventures; and as I
related, he made comments.
Affected by his previous precepts, and by my own awful approach to
eternity, which had suppressed in my heart the passions of ambition
and pride, I now became as desirous of conviction as I had
heretofore been sophistical in support of my folly. To be predisposed
is to be half converted; and soon this exemplary pastor convinced
my understanding of the impious and immoral tendency of my past
life. He shewed me, that to the inordinate gratification of a particular
caprice, I had sacrificed my duty towards my natural protectors,
myself, and my God. That my ruling passion, though harmless in its
nature, was injurious in its effects; that it gave me a distaste for all
sober occupations, perverted my judgment, and even threatened me
with the deprivation of my reason. Religion itself, he said, if indulged
with immoderate enthusiasm, at last degenerates into zealotry, and
leaves the poor devotee too rapturous to be rational, and too
virulent to be religious.

In a word, I have risen from my bed, an altered being; and I now


look back on my past delusions with abhorrence and disgust.
Though the new principles of conduct which I have adopted are not
yet rooted or methodized in my mind, and though the prejudices of
a whole life are not (and indeed could not be) entirely eradicated in
a few days; still, as I am resolved on endeavouring to get rid of
them, I trust that my reason will second my desire, and that the final
consequence of my perceiving what is erroneous will be my learning
what is correct.

Adieu.
LETTER XLVII

My health is now so far re-established, that I am no longer confined


to my room. Stuart pays us constant visits, and his lively advice and
witty reasoning, more complimentary than reproachful, and more
insinuated than expressed, have tended to perfect my reformation.

He had put Don Quixote (a work which I never read before) into my
hands; and on my returning it to him, with a confession of the
benefit that I derived from it, the conversation naturally ran upon
romances in general. He thus delivered his sentiments.

'I do not protest against the perusal of fictitious biography


altogether; for many works of this kind may be read without injury,
and some with profit. Novels such as the Vicar of Wakefield, The
Fashionable Tales, and Cœlebs, which draw man as he is, imperfect,
instead of man as he cannot be, superhuman, are both instructive
and entertaining. Romances such as the Mysteries of Udolpho, the
Italian, and the Bravo of Venice, which address themselves to the
imagination alone, are often captivating, and seldom detrimental.
But unfortunately so seductive are the latter class of composition,
that one is apt to neglect more useful books for them; besides,
when indulged in extreme, they tend to incapacitate us from
encountering the turmoils of active life. They present us with
incidents and characters which we can never meet in the world; and
act upon the mind like intoxicating stimulants; first elevate, and at
last enervate it. They teach us to revel in ideal scenes of transport
and distraction; and harden our hearts against living misery, by
making us so refined as to feel disgust at its unpoetical
accompaniments.

'In a country where morals are on the decline, novels always fall
several degrees below the standard of national virtue: and the
contrary holds in an opposite state of things. For as these works are
an exaggerated picture of the times, they represent the prevalent
opinions and manners with a gigantic pencil. Thus, since France
became depraved, her novels have become dissolute; and since her
social system arrived at its extreme of vicious refinement, they too
have adopted that last master-stroke of refined vice, which wins the
heart by the chastest aphorisms, and then corrupts it by the most
alluring pictures of villainy. Take Rousseau for instance. What St.
Preux is to Heloise, the book is to the reader. The lover so fascinates
his mistress by his honourable sentiments, that she cannot resist his
criminal advances. The book infatuates the reader, till, in his
admiration of its morality, he loses all recollection of its
licentiousness; for as virtue is more captivating, so vice is less
disgusting when adorned with the Graces. It may be said that an
author ought to portray vice in its seductive colours, for the purpose
of unmasking its arts, and thus warning the young and
inexperienced. But let it be recollected, that though familiarity with
enchanting descriptions of vice may add to prudence, it must
diminish virtue; and that while it teaches the reason to resist, it
entices the passions to yield. It was Rousseau's system, however, to
paint the scenes of a brothel, in order to speak the cant of a
monastery; and thus has he undone many an imitating miss or wife,
who began by listening to the language of love, that she might talk
sentiment, and act virtue; and ended by falling a victim to it,
because her heart had become entangled, her head bewildered, and
her principles depraved.

'Now, though we seldom see such publications in this country, yet


there is a strain of well-meaning, but false morality prevalent in
some. I will add (for why should I conceal it from you?) that your
principles, which have hitherto been formed upon such books alone,
appear, at times, a little perverted by their influence. It should now,
therefore, be your object to counteract these bad effects by some
more rational line of reading; and, as your ideas of real life are
drawn from novels; and as even your manners and language are
vitiated by them, I would recommend to you to mix in the world, to
copy living instead of imaginary beings, and to study the customs of
actual, not ideal society.'

With this opinion my father perfectly coincided: the system has


already been begun, and I now pass my time in an alternation of
instruction and amusement. Morality, history, languages, and music,
occupy my mornings; and my evenings are sometimes enlivened by
balls, operas, and familiar parties. As, therefore, we shall remain
some time in town, my father has taken a house.

Stuart, my counsellor and my companion, sits by my side, directs my


studies, re-assures my timidity, and corrects my mistakes. Indeed he
has to correct them often; for I still retain some taints of my former
follies and affectations. My postures are sometimes too picturesque,
my phrases too flowery, and my sentiments too sublime.

This having been the day fixed for the trials of Betterton and Grundy,
the prisoners were brought to the bar, and the names of the
prosecutors called. But these did not appear, and of consequence
the culprits were discharged. It is supposed that Betterton, the great
declaimer against bribery and corruption, had tampered with the
postilion and the police, and thus escaped the fate which awaited
him.

Adieu.
LETTER XLVIII

In ridding ourselves of a particular fault, we are apt, at first, to run


too far into its opposite virtue. I had poured forth my tender feelings
to you with such sentimental absurdity, when I fancied myself
enamoured of one man, that as soon as I began to reform, and
found myself actually attached to another, I determined on
concealing my fondness from you, with the most scrupulous
discretion of pen. Perhaps, therefore, I should beg your forgiveness
for never having hinted to you before, what I am now about
disclosing to you without any reserve.

Even at the very time when I thought I was bound in duty to be


devotedly in love with the hateful Grundy, I felt an unconscious
partiality for Stuart. But after my reformation, that partiality became
too decisive to be misinterpreted or concealed. And indeed he was
so constantly with me, and so kind a comforter and friend; and then
so fascinating are his manners, and so good his disposition; for I am
certain there is no such young man at all—you see in his eyes what
he is; you see instantly that his heart is all gentleness and
benevolence, and yet he has a fire in them, a fire that would delight
you: and I could tell you a thousand anecdotes of him that would
astonish you.—But what have I done with my sentence? Go back,
good pen, and restore it to the grammar it deserves: or rather leave
it as it is—a cripple for life, and hasten to the happy catastrophe.

With a secret transport which I cannot describe, I began of late to


perceive that Stuart had become more assiduous than usual in his
visits to me; that his manners betrayed more tenderness, and his
language more regard. These attentions increased daily; nor did he
omit opportunities of hinting his passion, in terms which I could not
mistake.
This morning, however, put the matter beyond a doubt. I was alone
when he came to pay his accustomed visit. At first he made some
faint attempts at conversing upon indifferent topics; but all the time
I could perceive an uneasiness and perturbation in his manner that
surprised me.

'Pray,' said I, at length, 'what makes you so dull and absent to-day?'

'You,' replied he, with a smile.

'And what have I done?' said I.

''Tis not what you have done,' answered he; 'but what you will do.'

'And what is that?' said I.

He changed to a nearer chair, and looked at me with much agitation.


I guessed what was coming; I had expected it some time; but now,
when the moment arrived, I felt my heart fail; so I suddenly moved
towards the door, saying that I was sure I heard my father call.
Stuart sprang after me, and led me back by the hand.

'When I tell you,' said he, 'that on the possession of this hand
depends my happiness, may I flatter myself with the hope that my
happiness would not contribute to your misery?'

'As I am no longer a heroine,' said I, smiling, 'I do not intend to get


up a scene. You happen to have my hand now; and I am afraid—
very much afraid, that——'

'That what?' cried he, holding it faster.

'That it is not worth withdrawing,' said I.

But in this effort to shun a romance eclaircissement, I had, I feared,


run into the contrary extreme, and betrayed an undue boldness; so I
got sentimental in good earnest, and burst into tears. Stuart led me
to my chair, and soon dissipated my uneasiness by his eloquent
expressions of gratitude and delight, and his glowing pictures of our
future happiness. I told him, that I wondered how he, who knew my
failings so well, would venture to stake his happiness upon me.

'It was by my knowledge of your failings,' said he, 'that I discovered


your perfections. Those embarrassments of your life which I
witnessed have enabled me to judge of you more justly in a few
months, than had I been acquainted with you whole years, in the
common routine of intercourse. They have shewn me, that if you
had weakness enough to court danger, you had firmness enough to
withstand temptation; and that while the faulty part of your
character was factitious and superinduced, all the pure and generous
impulses came from your heart.'

Our conversation was interrupted by the sudden entrance of my


father; and on his hearing from Stuart (who, it seems had made him
a confidant) the favourable issue of our interview, the good old man
hugged both of us in his arms.

To detain you no longer, a week hence is fixed for our wedding.

I have just received a letter from Mary, mentioning her perfect


restoration to health, and her union with William. I shall offer no
observation on your late marriage with the butler; but I must
remark, that your reason for having never given me advice, during
my follies—namely, because my father had deprived you of the right
to do so, evinced more anger towards him than love for me.
However, I shall always be happy to hear of your welfare.

Adieu.
LETTER XLIX

I have just time to tell you, before I leave town, that my fate was
sealed this morning, and that I am a wife.

On my return to the house, after the ceremony, I found an


epithalamium, addressed to me by poor Higginson; but it was more
filled with hints at his own misery than congratulations upon my
happiness.

Honest Jerry Sullivan met me at the door, and shook my hand, and
danced round me in a fury of outrageous joy.

'Well,' cried he, 'often and often I thought your freaks would get you
hanged; but may I be hanged if ever I thought they would get you
married!'

'You see,' said I to Stuart, 'after all your pains to prevent me from
imitating romances, you have made me terminate my adventures
like a true romance—in a wedding. Pray with what moral will you
now conclude the book?'

'I will say,' returned he, 'that virtue—no. That calamity—no. That
fortitude and resignation—oh, no! I will say, then, that Tommy
Horner was a bad boy, and would not get plumcake; and that King
Pepin was a good boy, and rode in a golden coach.'

Adieu.

Transcriber's Note:

Minor typographical errors have been corrected without note.


Irregularities and inconsistencies in the text have been retained as printed.

The cover of this ebook was created by the transcriber and is hereby placed in
the public domain.
*** END OF THE PROJECT GUTENBERG EBOOK THE HEROINE ***

Updated editions will replace the previous one—the old editions


will be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States
copyright in these works, so the Foundation (and you!) can copy
and distribute it in the United States without permission and
without paying copyright royalties. Special rules, set forth in the
General Terms of Use part of this license, apply to copying and
distributing Project Gutenberg™ electronic works to protect the
PROJECT GUTENBERG™ concept and trademark. Project
Gutenberg is a registered trademark, and may not be used if
you charge for an eBook, except by following the terms of the
trademark license, including paying royalties for use of the
Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such
as creation of derivative works, reports, performances and
research. Project Gutenberg eBooks may be modified and
printed and given away—you may do practically ANYTHING in
the United States with eBooks not protected by U.S. copyright
law. Redistribution is subject to the trademark license, especially
commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the


free distribution of electronic works, by using or distributing this
work (or any other work associated in any way with the phrase
“Project Gutenberg”), you agree to comply with all the terms of
the Full Project Gutenberg™ License available with this file or
online at www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand,
agree to and accept all the terms of this license and intellectual
property (trademark/copyright) agreement. If you do not agree
to abide by all the terms of this agreement, you must cease
using and return or destroy all copies of Project Gutenberg™
electronic works in your possession. If you paid a fee for
obtaining a copy of or access to a Project Gutenberg™
electronic work and you do not agree to be bound by the terms
of this agreement, you may obtain a refund from the person or
entity to whom you paid the fee as set forth in paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only


be used on or associated in any way with an electronic work by
people who agree to be bound by the terms of this agreement.
There are a few things that you can do with most Project
Gutenberg™ electronic works even without complying with the
full terms of this agreement. See paragraph 1.C below. There
are a lot of things you can do with Project Gutenberg™
electronic works if you follow the terms of this agreement and
help preserve free future access to Project Gutenberg™
electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright
law in the United States and you are located in the United
States, we do not claim a right to prevent you from copying,
distributing, performing, displaying or creating derivative works
based on the work as long as all references to Project
Gutenberg are removed. Of course, we hope that you will
support the Project Gutenberg™ mission of promoting free
access to electronic works by freely sharing Project Gutenberg™
works in compliance with the terms of this agreement for
keeping the Project Gutenberg™ name associated with the
work. You can easily comply with the terms of this agreement
by keeping this work in the same format with its attached full
Project Gutenberg™ License when you share it without charge
with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.

1.E. Unless you have removed all references to Project


Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project
Gutenberg™ work (any work on which the phrase “Project
Gutenberg” appears, or with which the phrase “Project
Gutenberg” is associated) is accessed, displayed, performed,
viewed, copied or distributed:

This eBook is for the use of anyone anywhere in the United


States and most other parts of the world at no cost and
with almost no restrictions whatsoever. You may copy it,
give it away or re-use it under the terms of the Project
Gutenberg License included with this eBook or online at
www.gutenberg.org. If you are not located in the United
States, you will have to check the laws of the country
where you are located before using this eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is


derived from texts not protected by U.S. copyright law (does not
contain a notice indicating that it is posted with permission of
the copyright holder), the work can be copied and distributed to
anyone in the United States without paying any fees or charges.
If you are redistributing or providing access to a work with the
phrase “Project Gutenberg” associated with or appearing on the
work, you must comply either with the requirements of
paragraphs 1.E.1 through 1.E.7 or obtain permission for the use
of the work and the Project Gutenberg™ trademark as set forth
in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is


posted with the permission of the copyright holder, your use and
distribution must comply with both paragraphs 1.E.1 through
1.E.7 and any additional terms imposed by the copyright holder.
Additional terms will be linked to the Project Gutenberg™
License for all works posted with the permission of the copyright
holder found at the beginning of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files
containing a part of this work or any other work associated with
Project Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute


this electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the
Project Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must,
at no additional cost, fee or expense to the user, provide a copy,
a means of exporting a copy, or a means of obtaining a copy
upon request, of the work in its original “Plain Vanilla ASCII” or
other form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™
works unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or


providing access to or distributing Project Gutenberg™
electronic works provided that:

• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project


Gutenberg™ electronic work or group of works on different
terms than are set forth in this agreement, you must obtain
permission in writing from the Project Gutenberg Literary
Archive Foundation, the manager of the Project Gutenberg™
trademark. Contact the Foundation as set forth in Section 3
below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on,
transcribe and proofread works not protected by U.S. copyright
law in creating the Project Gutenberg™ collection. Despite these
efforts, Project Gutenberg™ electronic works, and the medium
on which they may be stored, may contain “Defects,” such as,
but not limited to, incomplete, inaccurate or corrupt data,
transcription errors, a copyright or other intellectual property
infringement, a defective or damaged disk or other medium, a
computer virus, or computer codes that damage or cannot be
read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except


for the “Right of Replacement or Refund” described in
paragraph 1.F.3, the Project Gutenberg Literary Archive
Foundation, the owner of the Project Gutenberg™ trademark,
and any other party distributing a Project Gutenberg™ electronic
work under this agreement, disclaim all liability to you for
damages, costs and expenses, including legal fees. YOU AGREE
THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT
EXCEPT THOSE PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE
THAT THE FOUNDATION, THE TRADEMARK OWNER, AND ANY
DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE
TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL,
PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE
NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of
receiving it, you can receive a refund of the money (if any) you
paid for it by sending a written explanation to the person you
received the work from. If you received the work on a physical
medium, you must return the medium with your written
explanation. The person or entity that provided you with the
defective work may elect to provide a replacement copy in lieu
of a refund. If you received the work electronically, the person
or entity providing it to you may choose to give you a second
opportunity to receive the work electronically in lieu of a refund.
If the second copy is also defective, you may demand a refund
in writing without further opportunities to fix the problem.

1.F.4. Except for the limited right of replacement or refund set


forth in paragraph 1.F.3, this work is provided to you ‘AS-IS’,
WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of
damages. If any disclaimer or limitation set forth in this
agreement violates the law of the state applicable to this
agreement, the agreement shall be interpreted to make the
maximum disclaimer or limitation permitted by the applicable
state law. The invalidity or unenforceability of any provision of
this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the


Foundation, the trademark owner, any agent or employee of the
Foundation, anyone providing copies of Project Gutenberg™
electronic works in accordance with this agreement, and any
volunteers associated with the production, promotion and
distribution of Project Gutenberg™ electronic works, harmless
from all liability, costs and expenses, including legal fees, that
arise directly or indirectly from any of the following which you
do or cause to occur: (a) distribution of this or any Project
Gutenberg™ work, (b) alteration, modification, or additions or
deletions to any Project Gutenberg™ work, and (c) any Defect
you cause.

Section 2. Information about the Mission


of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new
computers. It exists because of the efforts of hundreds of
volunteers and donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project
Gutenberg™’s goals and ensuring that the Project Gutenberg™
collection will remain freely available for generations to come. In
2001, the Project Gutenberg Literary Archive Foundation was
created to provide a secure and permanent future for Project
Gutenberg™ and future generations. To learn more about the
Project Gutenberg Literary Archive Foundation and how your
efforts and donations can help, see Sections 3 and 4 and the
Foundation information page at www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-
profit 501(c)(3) educational corporation organized under the
laws of the state of Mississippi and granted tax exempt status
by the Internal Revenue Service. The Foundation’s EIN or
federal tax identification number is 64-6221541. Contributions
to the Project Gutenberg Literary Archive Foundation are tax
deductible to the full extent permitted by U.S. federal laws and
your state’s laws.

The Foundation’s business office is located at 809 North 1500


West, Salt Lake City, UT 84116, (801) 596-1887. Email contact
links and up to date contact information can be found at the
Foundation’s website and official page at
www.gutenberg.org/contact
Section 4. Information about Donations to
the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission
of increasing the number of public domain and licensed works
that can be freely distributed in machine-readable form
accessible by the widest array of equipment including outdated
equipment. Many small donations ($1 to $5,000) are particularly
important to maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws


regulating charities and charitable donations in all 50 states of
the United States. Compliance requirements are not uniform
and it takes a considerable effort, much paperwork and many
fees to meet and keep up with these requirements. We do not
solicit donations in locations where we have not received written
confirmation of compliance. To SEND DONATIONS or determine
the status of compliance for any particular state visit
www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states


where we have not met the solicitation requirements, we know
of no prohibition against accepting unsolicited donations from
donors in such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot


make any statements concerning tax treatment of donations
received from outside the United States. U.S. laws alone swamp
our small staff.

Please check the Project Gutenberg web pages for current


donation methods and addresses. Donations are accepted in a
number of other ways including checks, online payments and
credit card donations. To donate, please visit:
www.gutenberg.org/donate.

Section 5. General Information About


Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could
be freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose
network of volunteer support.

Project Gutenberg™ eBooks are often created from several


printed editions, all of which are confirmed as not protected by
copyright in the U.S. unless a copyright notice is included. Thus,
we do not necessarily keep eBooks in compliance with any
particular paper edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg
Literary Archive Foundation, how to help produce our new
eBooks, and how to subscribe to our email newsletter to hear
about new eBooks.
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookbell.com

You might also like