Skip to content

Instantly share code, notes, and snippets.

View sgrove's full-sized avatar
Infinigraph, and beyond!

Sean Grove sgrove

Infinigraph, and beyond!
View GitHub Profile
I would like you to translate TypeScript react components to Rescript react components, using some examples I will provide as a guide. Any time you are unsure as to the equivalency between a TypeScript construct and its Rescript counterpart, add it to a "Future examples to provide" list you output at the end after the code.
Let's begin!
Heres PromptEditor.tsx:
import React, { useState } from "react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";

Reading the (already impressive) compiled output in in the tutorial by Michele Riva on Calling ReasonML from TypeScript, I thought the output could be made nearly identical (bar comments and some weird nest paren wrapping) to what an experienced dev might write by hand

If we:

  1. have Flat-variants-(and polymorphic-variants)-as-strings (see
  2. Omit String(x) when x is already a string (already merged): rescript-lang/rescript-compiler#4293
  3. Propogate the variable names from destructuring a tuple to the output (see
  4. Don't do nested parens inside of {j|$x foo $y bar $z baz|j} output

Then the output (minus the /* tuple */ comments) would be exactly what you'd write by hand!

type editor;
module Editor: {
let make:
~width: string=?,
~height: string=?,
~value: string=?,
~defaultValue: string=?,

Keybase proof

I hereby claim:

  • I am sgrove on github.
  • I am sgrove ( on keybase.
  • I have a public key whose fingerprint is 35A0 F67E AD5E 19C0 75B2 7F72 C0B8 0362 7E5F CE94

To claim this, I am signing this object:

sgrove / Example_queries.graphql
Created July 16, 2018 10:47
Example Descuri (URLHound?) Queries
descuri(url: "") {
twitter {
youTube {
other {
sgrove / google_maps.gql
Created July 14, 2018 01:29
Google Maps (Reverse+) Geolocation and Elevation API
google(auths: { googleMapsKey: "..." }) {
maps {
intersection: geolocation(address: "Eddy & Franklin St, San Francisco, CA") {
point: reverseGeolocation(
point: { lat: 37.7478646802915, lng: -122.4578673697085 }
) {
sgrove / onegraph.gql
Last active July 12, 2018 21:14
Example multi-service query with OneGraph and GraphQL
## Retrieve a YouTube video by its id
youTubeVideo(id: "YX40hbAHx3s") {
snippet {
# Pull out the title
# Jump to the channel the video was uploaded to
uploadChannel {
snippet {
# Get the title of the channel
"created_at": "Thu Apr 06 15:28:43 +0000 2017",
"id": 850007368138018817,
"id_str": "850007368138018817",
"text": "RT @TwitterDev: 1/ Today we’re sharing our vision for the future of the Twitter API platform!n",
"truncated": false,
"entities": {
"hashtags": [],
"symbols": [],
sgrove /
Last active February 11, 2019 12:24
Bad interaction between Async wrapper around ocurl and httpaf
[@@ocaml.doc " Async support for Curl, see "]
module M = Curl.Multi
type interrupt = unit Async.Ivar.t
type multi =
mt: ;
all_events: (Unix.file_descr, interrupt list) Hashtbl.t ;
wakeners: (Curl.t, Curl.curlCode Async.Ivar.t) Hashtbl.t }