Skip to content

Instantly share code, notes, and snippets.

View olegon's full-sized avatar

Leandro Gonçalves de Oliveira olegon

View GitHub Profile
provider "aws" {
region = "sa-east-1"
}
resource "aws_sns_topic" "this" {
name = "sns_fanout"
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using ClosedXML.Excel;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace testing_closedxml.Controllers
provider "aws" {
region = "us-east-1"
}
data "aws_vpc" "default" {
default = true
}
data "aws_subnet_ids" "default" {
vpc_id = data.aws_vpc.default.id

The Joy of Clojure

Anotações do livro The Joy of Clojure (2nd Edition).

Clojure Philosophy

Clojure é uma linguagem simples (não simplória), expressiva e prática (usada fora da academia). Suas maiores qualidades são:

  • Simplicidade: síntaxe simples e ausência de construções complexas;
  • Consistência: funcionalidades semelhantes possuem síntaxes semelhantes;
const fs = require('fs');
const fetch = require('node-fetch');
const { promisify } = require('util');
const readFileAsync = promisify(fs.readFile);
processFiles( [
'Animal.csv',
'Cor.csv',
'Fruta.csv',
const transaction = {
amount: 1000,
custoner: {
name: 'Gambino'
}
};
const { customer } = transaction,
{ name } = customer;
function asyncTimeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms, `Done after ${ms} ms.`));
}
function* asyncIterator(untilMs) {
let ms = 1;
while (ms <= untilMs) {
yield asyncTimeout(ms);
ms *= 2;
function* sequenciaDeFibonacci() {
let atual = 0,
proximo = 1;
while (true) {
const proximoValor = atual + proximo;
atual = proximo;
proximo = proximoValor;
function sequenciaDeFibonacci() {
return {
[Symbol.iterator]() {
let atual = 0,
proximo = 1; // Criação de valores de closure para um iterator.
return {
next() {
const proximoValor = atual + proximo;
const array = [1, 2, 3];
const iterator = array[Symbol.iterator]();
iterator.next(); // { done: false, value: 1 }
iterator.next(); // { done: false, value: 2 }
iterator.next(); // { done: false, value: 3 }
iterator.next(); // { done: true, value: undefined }