text: 'use strict'
  
  const generic = require('@nodeguy/generic')
  const _ = generic._
  const is = require('@nodeguy/type').is
  
  const get = generic.create({name: 'get', curry: true})
  
  get.method([is(Number), is(String)],
    (key, string) =>
      string[key]
  )
  
  get.method([is(Number), is('arguments')],
    (key, args) =>
      get(key, Array.from(args))
  )
  
  get.method([is(Number), is(Array)],
    (key, array) =>
      array[key]
  )
  
  get.method([x => x < 0, _],
    (key, array) =>
      array[array.length + key]
  )
  
  module.exports = get
  