Coder Social home page Coder Social logo

lumiseven / fpinscala Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fpinscala/fpinscala

0.0 0.0 0.0 5.56 MB

Code, exercises, answers, and hints to go along with the book "Functional Programming in Scala"

Home Page: http://manning.com/bjarnason

License: MIT License

Scala 100.00%

fpinscala's Introduction

Join the chat at https://gitter.im/fpinscala/fpinscala

This repository contains exercises, hints, and answers for the book Functional Programming in Scala. Along with the book itself, it's the closest you'll get to having your own private functional programming tutor without actually having one.

There are two main branches in this repository:

Be sure to select the branch which matches the edition of the book you are reading!

Here's how to use this repository:

Each chapter in the book develops a fully working library of functions and data types, built up through a series of exercises and example code given in the book text. The shell of this working library and exercise stubs live in src/main/scala/fpinscala/exercises/<chapter-description>, where <chapter-description> is a package name that corresponds to the chapter title (see below). When you begin working on a chapter, we recommend you open the exercise file(s) for that chapter, and when you encounter exercises, implement them in the exercises file and make sure they work.

If you get stuck on an exercise, let's say exercise 4 in the chapter, you can find hints in answerkey/<chapter-description>/04.hint.md (if no hints are available for a problem, the file will just have a single '-' as its contents) and the answer along with an explanation of the answer and any variations in answerkey/<chapter-description>/04.answer.md. The finished Scala modules, with all answers for each chapter live in src/main/scala/fpinscala/answers/<chapter-description>. Please feel free to submit pull requests for alternate answers, improved hints, and so on, so we can make this repo the very best resource for people working through the book.

Chapter descriptions:

  • Chapter 2: gettingstarted
  • Chapter 3: datastructures
  • Chapter 4: errorhandling
  • Chapter 5: laziness
  • Chapter 6: state
  • Chapter 7: parallelism
  • Chapter 8: testing
  • Chapter 9: parsing
  • Chapter 10: monoids
  • Chapter 11: monads
  • Chapter 12: applicative
  • Chapter 13: iomonad
  • Chapter 14: localeffects
  • Chapter 15: streamingio

Setup build environment

The project is setup to use Scala CLI. First install Scala CLI by following the installation instructions.

You'll also likely want an editor that's aware of Scala syntax. VSCode with the Metals extension works great.

Building

To build the code for the first time, from the root directory of the project (i.e., the directory where this README.md is located):

$ scala-cli compile .

This compiles all exercises and answers. You can also do:

$ scala-cli console .

to get a Scala REPL (prompt scala>) with access to exercises and answers, and then for example:

scala> import fpinscala.exercises.datastructures.List

to import the List data type.

To run the sample programs:

$ scala-cli run .

This gives a list of possible main methods to execute. To run one of them:

$ scala-cli run . --main-class fpinscala.answers.gettingstarted.printAbs

To run a single unit-test, you can specify the fully qualified class name and test name:

$ scala-cli test . -- 'fpinscala.exercises.gettingstarted.GettingStartedSuite.MyProgram.factorial'

To run unit-tests for a package you can do:

$ scala-cli test . -- 'fpinscala.exercises.gettingstarted.*'

To run all unit-tests:

$ scala-cli test .

Note, running all tests will result in failures. As you solve exercises, the tests will start to pass.

SBT

Note: an SBT build is also provided.

License

All code in this repository is MIT-licensed. See the LICENSE file for details.

Have fun, and good luck! Also be sure to check out the community wiki for the chapter notes, links to more reading, and more.

Paul, Rúnar, and Michael

fpinscala's People

Contributors

adamnfish avatar alexanderdaniel avatar aloshbennett avatar aoki avatar artemkorsakov avatar astorije avatar cdepillabout avatar elkorn avatar enijns avatar jazzatola avatar jlalbers avatar juhanar avatar lambdista avatar mlundela avatar mpilquist avatar newlandsvalley avatar orionll avatar pchiusano avatar psliwa avatar robcd avatar ronaldploeger avatar runarorama avatar soniah avatar tadayosi avatar thomo avatar tilois avatar tnoda avatar ummels avatar x7c1 avatar yawaramin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.