Haskell에서 Hello World 해 보았습니다 (Mobile Haskell/iOS)

4379 단어 iOS하스켈

이 기사에서는



Haskell 프로그램을 iOS상에서 확인하고 싶다고 생각하고 있어서, 우선은 스테디셀러 Hello World를 움직여 보았습니다.

덧붙여서 내 Mac에는 stack 등 이미 들어 있기 때문에, Mac 용 Haskell 환경계의 이야기는 생략시켜 달라고합니다.
  • Xcode10.1/iPhone8 시뮬레이터에서 동작 확인을 하고 있습니다.

  • Mobile Haskell



    이번에는 Mobile Haskell을 사용했습니다.

    또한 Christin Kjær님의 MobileHaskellFun 및 그 해설 기사의 내용을 이용하여 확인을 시켜 주셨습니다.

    빌드 할 때 (주로 보충입니다)



    원칙적으로는 다음 사이트대로 하면 움직입니다.

    그렇다면 Qiita에 쓴다. 죄송합니다, 초절 초보자의 나에서는 ↑에서도 어려운 곳이 있었으므로, 그 보충 사항을 써 주셨으면 좋겠다…

    Git 관계



    일시적인 평가를 실시하는 경우, git 커멘드의 입력을 조금 바꾸어, 이하와 같이 하는 것으로 간단하게 떨어뜨릴 수가 있을까 생각합니다.
    ・ git clone [email protected]:haskell/cabal.git  は
    ・ git clone https://github.com/haskell/cabal.git  に
    
    ・ git clone [email protected]:zw3rk/toolchain-wrapper.git  は
    ・ git clone https://github.com/zw3rk/toolchain-wrapper.git  に
    
    

    터미널 조작과 관련하여 보충은 이 정도입니다. git 계정과 확실히 연결되어 있다면 이것조차 불필요하고 위 사이트

    Set up the Haskell Code 위치



    위 사이트 에서는 다음과 같이 되어 있습니다.
    $ touch MobileFun.cabal cabal.project Makefile call LICENSE src/Lib.hs
    

    또 다른 방법으로, 즐겁게하기 위해 다음 리포지토리

    clone 해 떨어뜨려 그 hs-src의 파일들을, 스스로 작성한 XCode 프로젝트 부하(hr-src)에 가져오는 등 해, 블로그의 내용과 비교해 주는 것이 편할지도 모릅니다(MobileFun .cabal을 조금 바꿀 정도가 될까 생각합니다).

    XCode



    전 기사는 XCode의 버전이 9.2이므로, 10,1로 사용하면 다소 궁리가 필요합니다.

    Label 어떻게 붙이는지



    Label을 붙여도 화면 오른쪽 하단에 그런 것이 나오지 않습니다. 그게 전은 나왔다고 생각합니다만 ・・

    아래 그림의 느낌으로 UI 부품을 붙일 수 있습니다.



    libconv?



    이것은 꽤 세세한 이야기입니다.
    내 환경에서 빌드할 때 다음 오류가 발생했습니다.
    ld: warning: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame
    Undefined symbols for architecture x86_64:
      "_iconv_close", referenced from:
          _hs_iconv_close in libHSMobileFun.a(iconv.o)
         (maybe you meant: _hs_iconv_close)
      "_iconv", referenced from:
          _hs_iconv in libHSMobileFun.a(iconv.o)
    

    이것은 기사 아래의 "NOTE:"에 있는 대로 라이브러리를 더해야 합니다. Xcode10.1에는 libvonc가 없기 때문에 아래 그림의 느낌으로 libiconv를 더하여 빌드함으로써 문제없이 작동시킬 수있었습니다.



    움직이면 어떻게 될까



    이런 느낌의 코드로
    hello = "Hello World from Mobile Haskell"
    
    class ViewController: UIViewController {
    
        @IBOutlet var helloWorldLabel: UILabel!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            helloWorldLabel.text = String(cString: hello())
        }
    

    이런 화면이 나왔습니다.



    마지막으로



    이런 도구도 caubal로 당겨서 이것이군요…
    편리한 코드/툴을 개발해 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기