{"id":13531484,"url":"https://github.com/Camilotk/ocaml4noobs","last_synced_at":"2025-04-01T19:32:13.196Z","repository":{"id":41062819,"uuid":"383944017","full_name":"Camilotk/ocaml4noobs","owner":"Camilotk","description":"Tutorial de OCaml para iniciantes na Linguagem.","archived":false,"fork":false,"pushed_at":"2023-08-19T18:38:05.000Z","size":2558,"stargazers_count":391,"open_issues_count":1,"forks_count":27,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-29T14:10:26.923Z","etag":null,"topics":["brasil","functional-programming","ocaml","portugues","tutorial"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Camilotk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-07-07T23:02:22.000Z","updated_at":"2025-03-28T19:54:13.000Z","dependencies_parsed_at":"2024-01-13T17:12:27.642Z","dependency_job_id":"e2b50987-5c7e-49d1-9b80-675e90388ef8","html_url":"https://github.com/Camilotk/ocaml4noobs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Camilotk%2Focaml4noobs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Camilotk%2Focaml4noobs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Camilotk%2Focaml4noobs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Camilotk%2Focaml4noobs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Camilotk","download_url":"https://codeload.github.com/Camilotk/ocaml4noobs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246700629,"owners_count":20819907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brasil","functional-programming","ocaml","portugues","tutorial"],"created_at":"2024-08-01T07:01:03.358Z","updated_at":"2025-04-01T19:32:10.575Z","avatar_url":"https://github.com/Camilotk.png","language":"OCaml","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/he4rt/4noobs\" target=\"_blank\"\u003e\n    \u003cimg src=\"./images/header-4noobs.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"./images/logo_ocaml_noobs.png\" alt=\"ocaml\"\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eTutorial de OCaml para iniciantes na Linguagem.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Camilotk/ocaml4noobs/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Camilotk/ocaml4noobs/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License MIT\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## ROADMAP\n\n## Parte 1 - Introdução\n- [O que é OCaml?](./1_introducao#o-que-%C3%A9-ocaml)\n- [História do OCaml](./1_introducao#hist%C3%B3ria-do-ocaml)\n- [Instalação](./1_introducao#instala%C3%A7%C3%A3o)\n- [Instalando o Dune](./1_introducao#instalando-o-dune)\n- [Hello World](./1_introducao#hello-world)\n- [Porque OCaml?](./1_introducao#porque-ocaml)\n\t- [Concisa e Declarativa](./1_introducao#concisa-e-declarativa)\n  \t- [Linguagens Concisas vs Verbosas](./1_introducao#linguagens-concisas-vs-verbosas)\n\t- [Redução de Erros Acidentais](./1_introducao#redução-de-erros-acidentais)\n- [Particularidades de OCaml](./1_introducao#particularidades-de-ocaml)\n\t- [Inferência de Tipos](./1_introducao#infer%C3%AAncia-de-tipos)\n\t- [Imutabilidade](./1_introducao#imutabilidade)\n\t- [Dados e Operações](./1_introducao#dados-e-opera%C3%A7%C3%B5es)\n- [Materiais em Inglês para aprender OCaml](./1_introducao#materiais-em-ingl%C3%AAs-para-aprender-ocaml)\n\n## Intermezzo 1 -  Ferramentas\n#### Escolha a sua:\n- [VS Code](./1I_ferramentas/vscode.md)\n- [Emacs](./1I_ferramentas/emacs.md)\n- [VIM](./1I_ferramentas/vim.md)\n\n## Parte 2 - Funções\n- [O que é uma função](./2_funcoes#o-que-é-uma-função)\n    - [Definição](./2_funcoes#definição)\n    - [Funções Constantes](./2_funcoes#funções-constantes)\n    - [Funções Lineares](./2_funcoes#funções-lineares)\n    - [Funções Quadráticas](./2_funcoes#funções-quadráticas)\n    - [Funções Trigonométricas](./2_funcoes#funções-trigonométricas)\n- [Aplicando Funções](./2_funcoes#aplicação-de-funções)\n    - [Funções com um argumento](./2_funcoes#funções-com-um-argumento)\n    - [Funções com múltiplos argumentos](./2_funcoes#funções-com-múltiplos-argumentos)\n- [Tipos de função](./2_funcoes#tipos-de-função)\n    - [Função de alta ordem](./2_funcoes#funções-de-alta-ordem)\n- [Currying](./2_funcoes#currying)\n- [Função em prefixo e em infixo](./2_funcoes#função-em-prefixo-e-em-infixo)\n    - [Defininfo funções em infixo](./2_funcoes#definindo-funções-em-infixo)\n- [Funções lambda](./2_funcoes#funções-lambda)\n- [Recursão](./2_funcoes#recursão)\n- [Canalização](./2_funcoes#piping--canalização)\n- [Composição de funções](./2_funcoes#composição-de-funções)\n\n## Intermezzo 2 -  Scripts e REPL\n- [Scripts e REPL](./2I_repl)\n\n## Parte 3 - Dados\n- [Tipos Pré-definidos](./3_dados#tipos-pré-definidos)\n - [Tipos Básicos](./3_dados#tipos-básicos)\n - [Int](./3_dados#int)\n - [Float](./3_dados#float)\n - [Conversão de Tipos Numéricos](./3_dados#conversão-de-tipos-numéricos)\n - [Char](./3_dados#char)\n - [String](./3_dados#string)\n\t - [Acessando caracteres em uma String](./3_dados#acessando-carateres-em-uma-string)\n\t - [Módulo String](./3_dados#módulo-string)\n - [Bool](./3_dados#bool)\n \t- [Operadores Booleanos](3_dados#operadores-booleanos)\n- [Unit](3_dados#unit)\n- [List](./3_dados#list)\n\t- [Combinando listas](./3_dados#combinando-listas)\n- [Arrays](./3_dados#arrays)\n- [Tuplas](./3_dados#tuplas)\n- [Records](./3_dados#records)\n\t- [Valores Mutáveis](./3_dados#valores-mutáveis)\n\t- [Copiando e Alterando Valores](./3_dados#copiando-e-alterando-valores)\n- [Discriminated Union](./3_dados#discriminated-union)\n- [Pattern Matching](./3_dados#pattern-matching)\n- [Igualdade Estrutural](./3_dados#igualdade-estrutural)\n- [Generics](./3_dados#generics)\n\n## Intermezzo 3 -  Sistema de Build\n- [Dune](./3I_build)\n\n## Parte 4 - Organização do Código\n- [Função Main](./4_organizacao#função-main)\n- [Módulos e Assinaturas](./4_organizacao#módulos-e-assinaturas)\n    - [Assinaturas e Interfaces](./4_organizacao#assinaturas-e-interfaces)\n    - [Tipos Abstratos](./4_organizacao#tipos-abstratos)\n    - [Submódulos](./4_organizacao#submódulos)\n    - [Abrindo Módulos](./4_organizacao#abrindo-módulos)\n    - [Extendendo Módulos e Assinaturas](./4_organizacao#extendendo-módulos-e-assinaturas)\n- [Erros Comuns com Módulos](./4_organizacao#erros-comuns-com-módulos)\n- [Projetando Módulos](./4_organizacao#projetando-módulos)\n    - [Raramente exponha tipos concretos](./4_organizacao#raramente-exponha-tipos-concretos)\n    - [Projete para quem está chamando](./4_organizacao#projete-para-quem-está-chamando)\n    - [Crie interfaces uniformes](./4_organizacao#crie-interfaces-uniformes)\n    - [Interface antes da implementação](./4_organizacao#interface-antes-da-implementação)\n- [Functors](./4_organizacao#functors)\n- [Módulos de primeira-classe](./4_organizacao#módulos-de-primeira-classe)\n    - [Construindo módulos de Primeira Classe](./4_organizacao#construindo-módulos-de-primeira-classe)\n    - [Acessando módulos de primeira classe](./4_organizacao#acessando-módulos-de-primeira-classe)\n    - [Você pode viver sem módulos de primeira classe](./4_organizacao#você-pode-viver-sem-módulos-de-primeira-classe)\n\n## Intermezzo 4 - Testes\n- [Testes Unitários](./4I_testes#testes-unitários)\n- [Testes Baseados em Propriedades](./4I_testes#testes-baseados-em-propriedades)\n\n## Parte 5 - Mais Tipos\n- [Pattern Matching](./5_tipos#pattern-matching)\n- [Exception](./5_tipos#exception)\n- [Tratando erros sem exceções](./5_tipos#tratando-erros-sem-exceções)\n- [Option](./5_tipos#option)\n- [Result](./5_tipos#result)\n- [Sequence](./5_tipos#sequence)\n\n## Intermezzo 5 - esy\n- [esy](./5I_dependencias)\n\n## Parte 6 - CRUD\n- *em breve*\n\n## Apêndice 1 - OOP\n- *em breve*\n\n## Apêndice 2 - FFI com C\n- *em breve*\n\n\u003cp align=\"center\"\u003eMade with 🐫💜\u003c/p\u003e\n\n## Contribuidores ✨\n\nNosso agradecimento a todas essas pessoas ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Camilotk\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/30880723?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCamilo Cunha de Azevedo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#content-Camilotk\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"https://github.com/Camilotk/OCaml4Noobs/commits?author=Camilotk\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-Camilotk\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#mentoring-Camilotk\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/eduardocanellas\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/34381457?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEduardo Canellas de Oliveira\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#content-eduardocanellas\" title=\"Content\"\u003e🖋\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://vitorsalmeida.vercel.app/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/70543018?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVitor\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#content-vit0rr\" title=\"Content\"\u003e🖋\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/bihellzin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/49006461?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGabriel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#content-bihellzin\" title=\"Content\"\u003e🖋\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/vinisioux\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/36283335?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVinicius Leonardo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#content-vinisioux\" title=\"Content\"\u003e🖋\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/nogw\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/65539816?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003enogw\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#content-nogw\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"https://github.com/Camilotk/OCaml4Noobs/commits?author=nogw\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://heartdevs.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/44484286?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMateus Mendes \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#design-m7he4rt\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/caiomartins1\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/45666995?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCaio Martins\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Camilotk/OCaml4Noobs/pulls?q=is%3Apr+reviewed-by%3Acaiomartins1\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/tujmon\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/61995846?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArthur Monici\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Camilotk/OCaml4Noobs/pulls?q=is%3Apr+reviewed-by%3Atujmon\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/gsbcamargo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47952041?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGabriel Schreiner\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Camilotk/OCaml4Noobs/pulls?q=is%3Apr+reviewed-by%3Agsbcamargo\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nEsse projeto segue a especificação do [all-contributors](https://github.com/all-contributors/all-contributors). Contribuições de todos os tipos são bem-vindas!\n","funding_links":[],"categories":["Parabéns!","OCaml"],"sub_categories":["7ª Etapa"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCamilotk%2Focaml4noobs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCamilotk%2Focaml4noobs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCamilotk%2Focaml4noobs/lists"}