ν’€μŠ€νƒ μ›ΉπŸŒ 개발자 지망생 πŸ§‘πŸ½β€πŸ’»
βž• 인곡지λŠ₯ 관심 πŸ€–


Categories


Recent views

  • 1
  • 2
  • 3
  • 4
  • 5

OSSU PL-A Section 4

  1. νƒ€μž… μΆ”λ‘ (Type Inference)
    • μƒν˜Έ μž¬κ·€ ꡬ쑰λ₯Ό μœ„ν•œ 방법
      • λͺ¨λ“ˆ, λ„€μž„μŠ€νŽ˜μ΄μŠ€, μ‹œκ·Έλ‹ˆμ²˜
        • 동일(equivalence)
          πŸ—£οΈ quote

          좜처 κ°•μ˜ Programming Languages, Part A, μ›Œμ‹±ν„΄ λŒ€ν•™κ΅

          OSSU PL-A Section 4

          νƒ€μž… μΆ”λ‘ (Type Inference)

          • μžλ°”, C, ML κ³Ό 같은 정적 νƒ€μž… μ–Έμ–΄μ˜ 경우 λ°”μΈλ”©λ“€μ˜ νƒ€μž…μ΄ λͺ…μ‹œμ μœΌλ‘œ μ£Όμ–΄μ Έ 컴파일 μ‹œκ°„μ— 정해짐.
            • λ‹€λ§Œ, SML은 λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ νƒ€μž… 좔둠을 톡해 νƒ€μž…μ„ μžλ™ μ»΄νŒŒμΌν•¨.
          • Racket, Ruby, Python 같은 동적 νƒ€μž… μ–Έμ–΄μ˜ 경우, λŸ°νƒ€μž„μ— νƒ€μž… μ—λŸ¬κ°€ λ‚  수 있음.

          일반적으둜 νƒ€μž… μΆ”λ‘ μœΌλ‘œ νƒ€μž…μ„ μ •ν•˜κ³ , νƒ€μž… 체킹을 톡해 였λ₯˜λ₯Ό μ°Ύμ•„λ‚΄μ§€λ§Œ 이 λ‘˜μ„ λΆ„λ¦¬ν•˜μ§€μ•Šκ³  μƒκ°ν•˜κ³€ ν•œλ‹€.

          λ§Œμ•½ μ—¬λŸ¬ νƒ€μž…μ΄ κ°€λŠ₯ν•˜λ©΄ μ œλ„€λ¦­ νƒ€μž…μœΌλ‘œ μΆ”λ‘ λœλ‹€.

          νƒ€μž… 좔둠은, μ‚¬μš©λ˜λŠ” λ³€μˆ˜κ°€ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜, 쑰건문 λΆ„κΈ°, μ—°μ‚°μž 등에 μ˜ν•΄ μΆ”λ‘ λ˜μ–΄ κ²°μ •λ˜λ©°, λΆˆκ°€λŠ₯ν•  경우 μ—λŸ¬κ°€ λ‚œλ‹€.

          • μ„œλΈŒ 타이핑(μ—¬λŸ¬ μ’…λ₯˜μ˜ νƒ€μž…μ΄ λ“€μ–΄κ°ˆ 수 있게 ν•˜λŠ” μ–Έμ–΄(ex) λ§€κ°œλ³€μˆ˜κ°€ 길이 2 ν˜Ήμ€ 3짜리 νŠœν”Œμ΄ λ“€μ–΄κ°€λŠ” 경우)), μ œλ„€λ¦­ νƒ€μž…μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ” 경우 νƒ€μž… 좔둠이 ꡉμž₯히 μ–΄λ €μ›Œμ§.

          μƒν˜Έ μž¬κ·€ ꡬ쑰λ₯Ό μœ„ν•œ 방법

          파이썬 같이 이후에 μ •μ˜ν•œ ν•¨μˆ˜λ₯Ό μ‚¬μš©κ°€λŠ₯ν•œ κ²½μš°μ—λŠ” μ‰½κ²Œ μƒν˜Έ μž¬κ·€λ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€.

          SML 같이 μœ„μ—μ„œ μ•„λž˜λ‘œ μ°¨λ‘€λŒ€λ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ ν•˜λŠ” κ²½μš°μ—λŠ” λ™μ‹œμ— ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” νŠΉλ³„ν•œ 방법을 μ“°κ±°λ‚˜ 일급 ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ κ΅¬ν˜„

          λͺ¨λ“ˆ, λ„€μž„μŠ€νŽ˜μ΄μŠ€, μ‹œκ·Έλ‹ˆμ²˜

          ML은 λͺ¨λ“ˆκ³Ό μ‹œκ·Έλ‹ˆμ²˜λ₯Ό 톡해 νŒ¨ν‚€μ§€μ™€ μΊ‘μŠν™”, 좔상화λ₯Ό κ΅¬ν˜„ν•  수 있음

          μ‹œκ·Έλ‹ˆμ²˜λ₯Ό 톡해 바인딩과 ν•¨μˆ˜μ˜ 이름과 νƒ€μž…μ„ μ§€μ •ν•˜κ³ , 이λ₯Ό λͺ¨λ“ˆμ— μƒμ†ν•˜λ„λ‘ ν•˜λ©΄ ν•΄λ‹Ή 바인딩과 ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜κ±°λ‚˜, κ΅¬ν˜„λ˜μ–΄ μžˆλŠ” 것을 μ‚¬μš©ν•˜λ„λ‘ κ°•μ œ

          동일(equivalence)

          ν”„λ‘œκ·Έλž˜λ°κ³Ό 컴퓨터 κ³Όν•™μ—μ„œ λ™μΌν•˜λ‹€λŠ” κ²ƒμ˜ μ •μ˜λŠ” μ€‘μš”ν•˜λ‹€.

          νŠΉμ • ν•¨μˆ˜λ₯Ό κ°€λ…μ„±μ΄λ‚˜ μž¬μ‚¬μš©μ„±, μˆ˜μ •μ„±, μ„±λŠ₯μƒμœΌλ‘œ 더 λ‚˜μ€ ν•¨μˆ˜λ‘œ λŒ€μ²΄ν•˜λ € ν• λ•Œ, λ™μΌν•œ ν•¨μˆ˜λ‘œ λŒ€μ²΄ν•  λ•Œ, λ™μΌν•˜μ§€ μ•Šμ€ ν•¨μˆ˜λ‘œ λŒ€μ²΄ λœλ‹€λ©΄, λ™μž‘μ΄ λ‹¬λΌμ§€κ²Œ 되며 μ΄λŠ” λ²„κ·Έλ‘œ μ΄μ–΄μ§ˆ 수 μžˆλ‹€.

          ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같이 동일을 μ •μ˜ν•  수 μžˆλ‹€.

          • λ™μΌν•œ μž…λ ₯에 λ™μΌν•œ 좜λ ₯
          • λ™μΌν•œ 쒅말 단계 κ³Όμ •(μ˜μ›νžˆ 루프λ₯Ό 돌면 λ§ˆμ°¬κ°€μ§€λ‘œ μ˜μ›νžˆ λŒμ•„μ•Όν•¨)
          • λ©”λͺ¨λ¦¬ λ‚΄ 데이터λ₯Ό λ™μΌν•œ λ°©λ²•μœΌλ‘œ 배치, μ ‘κ·Ό 및 변경함.
            • μ „μ—­λ³€μˆ˜ λ³€ν™” λ“±
          • λ™μΌν•œ κ²°κ³Όλ₯Ό 냄(ν•¨μˆ˜ 리턴이 μ•„λ‹ˆλΌ 둜그 κΈ°λ‘μ΄λ‚˜ 터미널 좜λ ₯ λ“±)
            • λ§Žμ€ 경우 Side effect의 μ˜ˆμ‹œ
          • λ™μΌν•œ μ—λŸ¬λ₯Ό λ™μΌν•˜κ²Œ 처리