GithubHelp home page GithubHelp logo

sanctuary-show's Introduction

sanctuary-show

Haskell has a show function which can be applied to a compatible value to produce a descriptive string representation of that value. The idea is that the string representation should, if possible, be an expression which would produce the original value if evaluated.

This library provides a similar show function.

In general, this property should hold: eval (show (x)) = x. In some cases parens are necessary to ensure correct interpretation ({}, for example, is an empty block rather than an empty object in some contexts). Thus the property is more accurately stated eval ('(' + show (x) + ')') = x.

One can make values of a custom type compatible with show by defining a @@show method. For example:

//# Maybe#@@show :: Maybe a ~> () -> String
//.
//. ```javascript
//. > show (Nothing)
//. 'Nothing'
//.
//. > show (Just (['foo', 'bar', 'baz']))
//. 'Just (["foo", "bar", "baz"])'
//. ```
Maybe.prototype['@@show'] = function() {
  return this.isNothing ? 'Nothing' : 'Just (' + show (this.value) + ')';
};

Returns a useful string representation of the given value.

Dispatches to the value's @@show method if present.

Where practical, show (eval ('(' + show (x) + ')')) = show (x).

> show (null)
'null'

> show (undefined)
'undefined'

> show (true)
'true'

> show (new Boolean (false))
'new Boolean (false)'

> show (-0)
'-0'

> show (NaN)
'NaN'

> show (new Number (Infinity))
'new Number (Infinity)'

> show ('foo\n"bar"\nbaz\n')
'"foo\\n\\"bar\\"\\nbaz\\n"'

> show (new String (''))
'new String ("")'

> show (['foo', 'bar', 'baz'])
'["foo", "bar", "baz"]'

> show ([[[[[0]]]]])
'[[[[[0]]]]]'

> show ({x: [1, 2], y: [3, 4], z: [5, 6]})
'{"x": [1, 2], "y": [3, 4], "z": [5, 6]}'

sanctuary-show's People

Contributors

davidchambers 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.