- Scala Functional Programming Patterns
- Atul S. Khot
- 425字
- 2021-07-30 09:44:22
Abstractions
What do we mean by abstractions? Why are they important? To understand this, we will compare two approaches. First, the "go to the wall and pull at one of the wooden panels fitted into the rectangular hole" approach versus the "open the door, please" approach.
A door is an abstraction. We really don't care whether it is made of wood or some other material, or what type of a lock it has, or any other details. The details are important, but not always. If we worry about the details always, we would quickly get bogged down, and all the communication would effectively come to a halt.
A table is an abstraction, so is a chair, and so is a house. I hope you get the drift. We want to be selectively ignorant of the details at times, and selective ignorance is abstraction.
Now, you may ask why does it matter to us programmers? The reason is that it gets things done in a compact manner.
For example, let's look at the following Scala code, which is used to count the frequency of characters in a string:
scala> "hello world".toList.filter(_.isLetter).groupBy(x => x).map { y => | y._1 -> y._2.size | } res1: scala.collection.immutable.Map[Char,Int] = Map(e -> 1, l -> 3, h -> 1, r -> 1, w -> 1, o -> 2, d -> 1)
Isn't it compact?
On the Urban Dictionary website, http://www.urbandictionary.com/define.php?term=cutie, the term "cutie" is defined as compact beauty—the kind you just want to put in your pocket and keep beside you forever.
I was bowled over when I first saw it all. It is concise, short, packs a punch, and is elegant. The Type Less Do More philosophy. Gets a lot done with less...
Note
To run the code snippet, fire up the Scala REPL. This looks a lot like a command console, a prompt waiting for you to key in Scala code. In a command terminal, typing just Scala fires up the REPL:
~> scala
It will give the following output:
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25).
You can type in expressions to have them evaluated and type help
for more information. Let's try the following simple one line commands:
scala> 1 + 1 res2: Int = 2 scala> "hello".length res4: Int = 5
For me, Scala brought the thrill back to programming... You can do a great deal by writing a few lines of code—less is more...
Scala gives you many tools, so the code is abstract and reusable...
- Learning Cython Programming(Second Edition)
- Go語言高效編程:原理、可觀測性與優(yōu)化
- PHP網(wǎng)絡(luò)編程學(xué)習(xí)筆記
- 深入淺出Serverless:技術(shù)原理與應(yīng)用實(shí)踐
- Getting Started with Laravel 4
- 動(dòng)手學(xué)數(shù)據(jù)結(jié)構(gòu)與算法
- 現(xiàn)代C++編程實(shí)戰(zhàn):132個(gè)核心技巧示例(原書第2版)
- HoloLens與混合現(xiàn)實(shí)開發(fā)
- 深入理解C指針
- 后臺開發(fā):核心技術(shù)與應(yīng)用實(shí)踐
- 零基礎(chǔ)學(xué)C語言(升級版)
- Python一行流:像專家一樣寫代碼
- 零基礎(chǔ)學(xué)編程系列(全5冊)
- 軟件開發(fā)中的決策:權(quán)衡與取舍
- Practical Time Series Analysis