読者です 読者をやめる 読者になる 読者になる

真面目なノート

こまめにその日の進捗などをメモしておく。

今日は休日(。>﹏<。)

4/10

勉強とか

Haskell

Spockに挑戦しようと思っていたが、そもそもの理解が不足しまくりなので、もう一度しっかり勉強し直すことにした。

とりあえずこのブログとかを見ながら勉強。

bitterharvest.hatenablog.com

鶴亀算

リスト内包表記の基本的な勉強。
書いたコードとしてはこんな感じ。

-- 鶴と亀があわせてn匹、鶴と亀の可能な組み合わせはどのようになるか。

tsurukameCombination :: Integer -> [(Integer,Integer)]
tsurukameCombination n = [(x,n - x) | x <- [0..n]]

-- 鶴と亀の足の総数はどうなるか。

tsurukameLegs :: [(Integer,Integer)] -> [Integer]
tsurukameLegs comb = [(\(tsuru,kame) -> 2*tsuru + 4*kame) tuple | tuple <- comb]

-- 本題。鶴亀算を解く。足の和がlegs、数の和がnumになる鶴の数を出す。

tsurukameAnswer :: Integer -> Integer -> [(Integer,Integer)]
tsurukameAnswer num legs =
  [(tsuru x, kame x) | x <- [0..num], 2 * (tsuru x) + 4 * (kame x) == 20]
  where kame x = num - x
        tsuru x = x

最後の、答えを出す奴、上のブログだと変数名がxとかなんだけども、いまいち可読性としてどうかなという気持ちもあったので、色々変えてみた。
ただ、where節がくっついちゃうくらいなら元のままのほうが良いかもしれない。

48時間でscheme

こっちも、前々から友人に勧められておいて全くできていなかったので、やっていくぞい。

最初の一歩

引数を受け取って返すだけのプログラム。
一応、stackの使い方にもなれておきたいので、stackでプログラムを作成しました。

練習問題1.2はこんな感じ?

module Main where
import System.Environment

import Lib

main :: IO ()
main = do
  args <- getArgs
  let x = read (args !! 0)::Int
  let y = read (args !! 1)::Int
  putStrLn("add" ++ show(x+y))

そして1.3はこんな。

main :: IO ()
main = do
  putStrLn("input your name")
  name <- getLine
  putStrLn("hello!!" ++ name)

do文の書き方とかも忘れていて、非常にまずいなあ。これを機にちゃんと復習しないとね。
一日一セクションくらいで進めて行きたい。

erlang

京尤シ舌で勧められた言語。関数型言語でありつつ、純粋主義を必要に応じて無視する柔軟性も持っているとかなんとか。アクターという仕組みが並列処理に向いているらしい。

ここ見て勉強するよん。

Introduction | Learn You Some Erlang for Great Good!

メモ

  • 変数名は大文字から始まらないとダメらしい……
  • アトムとか言う代物。文字列を普通の"1"とか"202020"とかの数字みたいに使える?
    このアトムが小文字から始まる関係上、変数名は大文字から始めないとダメ。
    • trueとfalseもアトムとして用いられているため、1や0という値と混同しないように気をつけよう。

この言語、今のところあんまり魅力的じゃない感じする……webアプリケーションでhaskellと比較されてるの見たから、一通り勉強したらそっちのほうを調べてみよう。

趣味とか

お絵かきした!たのC!!(。>﹏<。)