Skip to content

Instantly share code, notes, and snippets.

@naoto-ogawa
naoto-ogawa / JavaParserSample.java
Created December 30, 2018 04:26
JavaParser Sample
package com.example.testcode;
import com.github.javaparser.JavaParser;
import com.github.javaparser.Position;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.expr.MethodCallExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithRange;
import com.github.javaparser.ast.stmt.CatchClause;
@naoto-ogawa
naoto-ogawa / java_reduce.java
Created December 2, 2018 07:18
Java reduce sample
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Main3 {
public static void main(String[] args) {
package com.example.xml;
import org.joox.Match;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
package com.example.xml;
import org.joox.Match;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@naoto-ogawa
naoto-ogawa / Duplicate Record Fields in Haskell.hs
Created October 6, 2018 03:55
Duplicate Record Fields in Haskell
{-# LANGUAGE
DuplicateRecordFields
, OverloadedLabels
, DataKinds
, TypeFamilies
, FlexibleInstances
, MultiParamTypeClasses
#-}
import GHC.OverloadedLabels
@naoto-ogawa
naoto-ogawa / regrex_attoparsec.hs
Last active May 6, 2018 04:58
Regrex {min, max} for Attoparsec
import Control.Applicative
import Data.Attoparsec.ByteString.Char8
import qualified Data.Attoparsec.Internal.Types as T
-- | an equivalence of regrex {min, max}
-- see http://d.hatena.ne.jp/kazu-yamamoto/20100104/1262588929
range :: Int -> Int -> T.Parser i a -> T.Parser i [a]
range n m p = (++)
<$> count n p -- mimimam
<*> upto (m - n) p -- rest
@naoto-ogawa
naoto-ogawa / infinit_loop_attopersec.hs
Created May 1, 2018 11:46
Infinite loop on Attopersec
:set -XOverloadedStrings
import Control.Applicative
import Data.Attoparsec.Text
import Data.Attoparsec.Combinator
let foo = manyTill anyChar (lookAhead $ (char '@'))
parseOnly (many foo) "@"
^CInterrupted.
@naoto-ogawa
naoto-ogawa / json_access_by_lens.hs
Created April 18, 2018 07:07
JSON access by Lens
{-# LANGUAGE OverloadedStrings #-}
module Test06 where
import Prelude hiding (readFile, lookup)
import Control.Monad.IO.Class
import Control.Lens
import Data.Aeson
import Data.Aeson.Lens
@naoto-ogawa
naoto-ogawa / megaparsec_state.hs
Created April 16, 2018 13:19
Using Megaparsec with state monad
import Control.Monad.State
import Data.Void
import Text.Megaparsec hiding (State)
import Text.Megaparsec.Char
import qualified Text.Megaparsec.Char.Lexer as L
type Parser = ParsecT Void String (State Int)
str :: String
str = "11,2,43"
@naoto-ogawa
naoto-ogawa / PolyPerseLift.hs
Last active April 14, 2018 06:45
Lifting PolyPerse Text.Parse
module Test01 where
import Text.Parse
import qualified Text.ParserCombinators.Poly.State as PS
main :: IO ()
main = putStrLn "Test01"
liftP :: Parser t a -> PS.Parser s t a
liftP (P func) = PS.P $ \s tx -> pareResult s (func tx)